home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 January / CHIP Turkiye Ocak 1998.iso / ARACLAR / LOTUSORG / ACROREAD / INSTALL.DSK / MAIN.LSS < prev    next >
Text File  |  1996-05-16  |  95KB  |  2,532 lines

  1. ''/*********************************************************************
  2. ''
  3. ''   Module Name:   main.lss
  4. ''
  5. ''   Module Code:   TOOLKIT
  6. ''
  7. ''   Author:  Marcel Meth
  8. ''
  9. ''   Creation Date:  Aug 31, 1993
  10. ''
  11. ''   Copyright Lotus Development Corporation, (c) 1991
  12. ''
  13. ''
  14. ''   Description: 
  15. ''     Lotus script file for common install
  16. ''     If you are trying to create an automated install, you need to
  17. ''     remove or comment out the Calls that bring up dialogs and
  18. ''     ensure that the symbols have valid values.
  19. ''     See "AUTOMATE" comments throughout the  code.
  20. ''     You should be able to easily automate a simple COMPLETE install.
  21. ''
  22. ''   SUGGESTION: You should be able to tailor an install to you users by
  23. ''               having shell variables setup for them and using the
  24. ''               the lotus script "ENVIRON$" variable.
  25. ''                e.g. suppose the user has the following line in their autoexec.bat
  26. ''                   set NAME=Marcel
  27. ''                then you can pick it up with:
  28. ''                   name$ = ENVIRON$("NAME")
  29. ''
  30. ''   The following diagram illustrates the basic execution path(s)
  31. ''   available in this script.
  32. ''
  33. ''   InitInstall
  34. ''   |
  35. ''   WELCOME DIALOG (SYM_NAME$, SYM_COMPANY$, SYM_NETWORK$)
  36. ''   |
  37. ''   SERVERorDISTRIBUTION DIALOG (SYM_NETWORK$)
  38. ''   |
  39. ''   IF SMARTSUITE THEN   SUITE DIR DIALOG (SYM_BASEDIR$)
  40. ''   |
  41. ''   SELECT based on SYM_NETWORK$
  42. ''      |
  43. ''      gSTANDARD--.....
  44. ''      |        
  45. ''      gSERVER--.....
  46. ''      |        
  47. ''      gNODE--.....
  48. ''      |        
  49. ''      gDISTRIBUTION--.....
  50. ''
  51. ''     The main Drive for all Installs
  52. ''  
  53. ''   Tabs: 3 (In Brief do tabs 4 7)
  54. ''
  55. ''   Additional authors:  Mariana Zgripcea,   Dave Dupre,
  56. ''                        Thangarag Veerapan, Christopher Moy
  57. ''
  58. ''   Change History:
  59. ''   $Log:   //CIT/VOL1/CFLOG/logfiles/cominst/toolkit/main___@.lss  $
  60. '' 
  61. ''    Rev 1.213   16 May 1996 16:00:54   glutz
  62. '' Reset RemovePriorVersion buffer prior to calling PreCopyConfig.
  63. '' 
  64. ''    Rev 1.212   08 May 1996 16:05:04   schen
  65. '' fix automation install for Smartsuite.
  66. '' 
  67. ''    Rev 1.211   07 May 1996 10:15:00   glutz
  68. '' Rewrote logic for nodenodeoptions dialog.
  69. '' 
  70. ''    Rev 1.210   19 Apr 1996 11:55:00   jdonohue
  71. '' Fixed error evaluating Lot_IsDirWritable return (NOT Script TRUE/FALSE)
  72. '' 
  73. ''    Rev 1.209   10 Apr 1996 17:09:14   jdonohue
  74. '' Ref SPR: AGAO33XJT3
  75. '' Changed DetectSharedWindows logic to silently install server files if allowed
  76. '' 
  77. ''    Rev 1.208   05 Apr 1996 14:23:36   jdonohue
  78. '' Use new function FGetSectionFileList to get shared DLL filenames even if they
  79. '' have been renamed in the .INF file
  80. '' 
  81. ''    Rev 1.207   04 Apr 1996 21:49:00   glutz
  82. '' The nodenodeoptions dialog only pops up if there are options
  83. '' available for the selected products.
  84. '' 
  85. ''    Rev 1.206   04 Apr 1996 16:28:44   jdonohue
  86. '' Moved IncrementSharedDLLCount and Lot_DoSharedDLLs from inst.lss to main.lss
  87. '' since inst PostConfig processing not done for node since install not copied
  88. '' 
  89. ''    Rev 1.205   02 Apr 1996 11:49:36   jdonohue
  90. '' Call product INIT functions for server install before determining language install
  91. '' 
  92. ''    Rev 1.204   01 Apr 1996 08:25:56   jdonohue
  93. '' Moved function OneUp to toolkit.lss, made global
  94. '' Added call to Lot_FixupLanguageDirectories
  95. '' Rearranged code for determination of server language install
  96. '' 
  97. ''    Rev 1.203   20 Mar 1996 12:35:58   jdonohue
  98. '' Added function Lot_SetLotusFontsDir called after ResetWinWinSysSymbols
  99. '' 
  100. ''    Rev 1.202   19 Mar 1996 18:08:30   schen
  101. '' fix for Automate addiconoptions for server and node install.
  102. '' 
  103. ''    Rev 1.201   18 Mar 1996 13:12:26   jdonohue
  104. '' Ref SPR:LSCR32TQHP
  105. '' Use IsNewShell instead of WhatPlatform for determination of LOTUSFONTS directory
  106. '' 
  107. ''    Rev 1.200   06 Mar 1996 12:53:54   jdonohue
  108. '' Ref SPR: JMOY332R5H
  109. '' For low disk space on server install, loop back to server customize dialog if
  110. '' customize chosen
  111. '' 
  112. ''    Rev 1.199   05 Mar 1996 14:55:14   jdonohue
  113. '' Set the default basedir to value in HCU "User Path" for node, check if dir exists
  114. '' Added function OneUp to strip last path component
  115. '' 
  116. ''    Rev 1.198   04 Mar 1996 08:31:56   jdonohue
  117. '' Remove 16 bit shared component support -- pass 1 : eliminate LOTUSAPP
  118. '' 
  119. ''    Rev 1.197   29 Feb 1996 13:38:10   jdonohue
  120. '' Move the Lot_DoServerSharedWindows function call AFTER writng features to
  121. '' cinstall.ini
  122. '' 
  123. ''    Rev 1.196   29 Feb 1996 07:57:28   jdonohue
  124. '' Ref SPR: JMOY332R5H
  125. '' Changed main.lss logic to return to the customize dialog when space is
  126. '' insufficient if you chose customize the first time
  127. '' 
  128. ''    Rev 1.195   25 Jan 1996 16:16:58   jdonohue
  129. '' Set Windows directory to point to server for shared windows install, which is
  130. '' assumed to be the parent of the Windows System Directory
  131. '' 
  132. ''    Rev 1.194   24 Jan 1996 11:10:58   jdonohue
  133. '' Ref SPR:    JHOH325K2M
  134. '' Fixed logic error in shared windows detection
  135. '' 
  136. ''    Rev 1.193   23 Jan 1996 16:08:58   cmoy
  137. '' HISHI: Merged FE changes
  138. '' 
  139. ''    Rev 1.192   18 Jan 1996 11:09:42   schen
  140. '' BUG fix for default install addicon    
  141. '' 
  142. ''    Rev 1.191   17 Jan 1996 16:57:32   schen
  143. '' Add Addicon key word in Automate install.
  144. '' 
  145. ''    Rev 1.190   17 Jan 1996 13:50:32   jdonohue
  146. '' Added support for server installation to a shared windows location -- new functions:
  147. '' Lot_DoServerSharedWindows     installs system files on shared server windows location
  148. '' Lot_DetectSharedWindows        detects a shared window system and if writeable sets flag
  149. '' 
  150. ''    Rev 1.189   15 Jan 1996 15:06:34   jdonohue
  151. '' Added function Lot_DetectSharedWindows to detect shared windows server install
  152. '' and present UI for confirmation (NOTE: this is not fully functional as yet!!,
  153. '' placeholder for now)
  154. '' 
  155. ''    Rev 1.188   04 Jan 1996 14:55:20   jdonohue
  156. '' Ref SPR:    KHAN2XZUGU        
  157. '' Don't exit if LOTUSAPP directory doesn't exist -- there is no need to create
  158. '' one if only 32 bit products are installed
  159. '' 
  160. ''    Rev 1.187   29 Dec 1995 08:49:30   jdonohue
  161. '' Added function InitStickyCopyList which preserves user choices on customize
  162. '' 
  163. ''    Rev 1.186   22 Dec 1995 10:13:22   jdonohue
  164. '' Removed all references to SYM_PARENTDIR$ -- is now SYM_BASEDIR$ for all
  165. '' 
  166. ''    Rev 1.185   11 Dec 1995 13:59:46   jdonohue
  167. '' Replaced call to RefreshLanguageSourceDirectories with call to
  168. '' Lot_FixupSourceDirectories
  169. '' 
  170. ''    Rev 1.184   08 Nov 1995 16:57:34   tveerapp
  171. '' Fixes fot SPR#RMOO2xQQDY
  172. '' 
  173. ''    Rev 1.183   25 Oct 1995 08:47:14   glutz
  174. '' SYM_PARENTDIR was not always getting set.
  175. '' 
  176. ''    Rev 1.182   Oct 24 1995 16:55:34   cmoy
  177. '' removed eof char
  178. '' 
  179. ''    Rev 1.181   24 Oct 1995 12:28:28   jdonohue
  180. '' Fixed handling of suite server MLC case
  181. '' 
  182. ''    Rev 1.180   24 Oct 1995 11:59:02   glutz
  183. '' SetTheBaseSymbol sets SYM_BASE16DIR.
  184. '' 
  185. ''    Rev 1.179   23 Oct 1995 16:36:48   tveerapp
  186. '' Fixed spr# LSCR2X6MUC. Call product UI functions for automation.
  187. '' 
  188. ''    Rev 1.178   19 Oct 1995 14:54:52   jdonohue
  189. '' Don't use ".." in resetting SYM_STF_SRCDIR$ for server language install
  190. '' 
  191. ''    Rev 1.177   18 Oct 1995 18:02:36   amontalv
  192. '' Commented out code to check priviledge level.
  193. '' 
  194. ''    Rev 1.176   17 Oct 1995 16:08:28   jdonohue
  195. '' Changed logic for COMPONENTSDIR and LOTUSAPPDIR defaults from cinstall.ini
  196. '' 
  197. ''    Rev 1.175   17 Oct 1995 13:14:54   jdonohue
  198. '' Fixed wrong ini section reference, moved dialog code
  199. '' 
  200. ''    Rev 1.174   13 Oct 1995 14:43:56   jdonohue
  201. '' Added call to Lot_RefreshLocalComponentDir
  202. '' 
  203. ''    Rev 1.173   03 Oct 1995 16:42:18   tveerapp
  204. '' Fixed spr#TVEN2WNS5V. Removed the conditional check for calling into the 
  205. '' product UI functions only during custom install. Lot_CallProductFunctions(UI)
  206. '' will now be called for all types of installs (default,min and custom). This
  207. '' check was removed from case gSTANDARD and case gSERVER. 
  208. '' 
  209. ''    Rev 1.172   27 Sep 1995 17:03:42   jdonohue
  210. '' Set server defaults for LOTUSAPPDIR and COMPONENTSDIR in cinstall.ini found
  211. '' 
  212. ''    Rev 1.171   27 Sep 1995 14:48:02   jdonohue
  213. '' Language install message always based on SYM_REG_PRODUCTNAME$ (prod #1)
  214. '' Set SYM_INSTALLKINDS$ as well as SYM_INSTALLKIND$
  215. '' 
  216. ''    Rev 1.170   26 Sep 1995 16:10:12   jdonohue
  217. '' For suite language install, dialog says "smart Suite" in product field
  218. '' Fixed error on server/language install
  219. '' 
  220. ''    Rev 1.169   25 Sep 1995 15:29:38   jdonohue
  221. '' Call all product functions for InitLanguage
  222. '' 
  223. ''    Rev 1.168   21 Sep 1995 16:22:00   jdonohue
  224. '' Moved resetting of gINSTALLINI$ for output after reading of cinstall.ini file
  225. '' 
  226. ''    Rev 1.167   21 Sep 1995 12:28:34   jdonohue
  227. '' Don't reset gINSTALLINI$ for server language install
  228. '' 
  229. ''    Rev 1.166   13 Sep 1995 14:47:22   tveerapp
  230. '' Fixed the logic in SetTheBase. The registry is read only for a std./node 
  231. '' installs.
  232. '' 
  233. ''    Rev 1.165   13 Sep 1995 14:44:46   jdonohue
  234. '' Moved check for server language install
  235. '' 
  236. ''    Rev 1.164   12 Sep 1995 13:21:38   jdonohue
  237. '' Popup message for server language install
  238. '' 
  239. ''    Rev 1.163   12 Sep 1995 10:53:14   tveerapp
  240. '' Added Lo_SaveFeaturesInInstNodeIni() for a node install. This records
  241. '' uinstall information in cinstnod.ini
  242. '' 
  243. ''    Rev 1.162   08 Sep 1995 16:56:02   tveerapp
  244. '' Fixed spr#KHAN2VUQVY,the change is in SetTheBase for automation.
  245. '' 
  246. ''    Rev 1.161   07 Sep 1995 14:51:54   tveerapp
  247. '' Moved the setting of INSTDIR duringa language server install to Inst.lss
  248. '' to fix spr#WEDS2VNRDZ
  249. '' 
  250. ''    Rev 1.160   02 Sep 1995 15:29:50   amontalv
  251. '' Added check at beginning, right after initialization to determine if we have
  252. '' enough priviledges to install.
  253. '' 
  254. ''    Rev 1.159   31 Aug 1995 11:42:50   jdonohue
  255. '' Added code to check that the parent directory obtained from the registry is
  256. '' a valid drive, and if not, uses default
  257. '' 
  258. ''    Rev 1.158   22 Aug 1995 16:13:46   tveerapp
  259. '' For a standalone and node language installs don not reset the product symbols
  260. '' during automation.
  261. '' 
  262. ''    Rev 1.157   22 Aug 1995 13:52:42   jdonohue
  263. '' SetBaseSymbols now looks in registry under ..\lotus\Components for default
  264. '' 
  265. ''    Rev 1.156   17 Aug 1995 14:53:26   jdonohue
  266. '' Added functions to recognize and handle node install from secondary server
  267. '' language
  268. '' 
  269. ''    Rev 1.155   17 Aug 1995 14:36:28   callanan
  270. '' Set the bitmap display mode for billboards
  271. '' 
  272. ''    Rev 1.154   17 Aug 1995 14:03:22   callanan
  273. '' Changed the default way to handle bitmaps in dialogs
  274. '' 
  275. ''    Rev 1.153   15 Aug 1995 16:40:16   mmeth
  276. '' Part 2 of SPR# RMOO2UPTZD
  277. '' In SUB ConfigureAUTOEXEC I have added a check as to which dialog should be
  278. '' posted.  If there were files marked "SYSTEM", that were busy, then
  279. '' I send a message to the install.exe's window to reboot.
  280. '' This of course is only true, if the user chooses to reebot.
  281. '' 
  282. ''    Rev 1.152   15 Aug 1995 07:53:04   jdonohue
  283. '' For a node install, if main product and install directories differ, sets
  284. '' main directory to parent of install (secondary language install)
  285. '' 
  286. ''    Rev 1.151   14 Aug 1995 11:32:12   jdonohue
  287. '' Added code to handle server language install
  288. '' 
  289. ''    Rev 1.150   14 Aug 1995 10:48:02   callanan
  290. '' Modify SYM_CUSTOM$ to keep track of where we are in install, to decide how we display bitmaps in dialogs
  291. '' 
  292. ''    Rev 1.149   09 Aug 1995 13:48:06   callanan
  293. '' Created global SYM_CUST which keeps track of when we are in the Custom dialog
  294. '' so we can display bitmaps correctly.
  295. '' 
  296. ''    Rev 1.148   04 Aug 1995 14:54:26   amontalv
  297. '' Added quotes around the directory name in the lsirun like written to install.lst
  298. '' 
  299. ''    Rev 1.147   02 Aug 1995 17:45:26   tveerapp
  300. '' Added Lot_AutoSetSrvOptions to gSERVER.
  301. '' 
  302. ''    Rev 1.146   02 Aug 1995 16:28:04   jdonohue
  303. '' Changed calling method for InitLanguage
  304. '' 
  305. ''    Rev 1.145   27 Jul 1995 15:47:00   glutz
  306. '' Took out some print statements.
  307. '' 
  308. ''    Rev 1.144   27 Jul 1995 13:33:28   glutz
  309. '' Added cost of unc files to NumberOfBytesPerBillbd.
  310. '' 
  311. ''    Rev 1.143   27 Jul 1995 10:11:16   amontalv
  312. '' Put a check for the new shell around the CreateProgmanGroup call -- all three
  313. '' of them.  
  314. '' 
  315. ''    Rev 1.142   10 Jul 1995 14:33:06   glutz
  316. '' If CheckForSpace fails return to Select Parent dir dialog.
  317. '' 
  318. ''    Rev 1.141   07 Jul 1995 16:47:32   mzgripce
  319. '' if lotusappdir is deleted before the node install put an error and exit
  320. '' 
  321. ''    Rev 1.140   28 Jun 1995 11:42:28   tveerapp
  322. '' Added check to customize shared components for a custom install only.
  323. '' 
  324. ''    Rev 1.139   22 Jun 1995 15:34:16   tveerapp
  325. '' Added logic to Welcome code.Install ends when the welcome dialogs returns
  326. '' gBACK$.
  327. '' 
  328. ''    Rev 1.138   21 Jun 1995 20:21:16   amontalv
  329. '' Attempt to get User name and Company from 4 different places.  The original, from
  330. '' the Windows registry entry for Windows, the Windows registry location for Windows NT
  331. '' and using GetUserName as last resort.
  332. '' 
  333. ''    Rev 1.137   21 Jun 1995 11:33:36   tveerapp
  334. '' When an STFQUIT error is raised, check for automation by getting the
  335. '' SYM_AUTOMATIONINST value. Script does not store the automation$ variable's
  336. '' value.
  337. '' 
  338. ''    Rev 1.136   20 Jun 1995 13:48:24   tveerapp
  339. '' Changed the call from Lot_AutoGetProgramGroup to Lot_GetProgramGroupOrFolder
  340. '' 
  341. ''    Rev 1.135   19 Jun 1995 17:10:30   tveerapp
  342. '' During automation allow the defaultreg function to be called for the 
  343. '' 1st product(similar to the regular install).
  344. '' Should fix spr#KHAN2T2PCQ.
  345. '' 
  346. ''    Rev 1.134   12 Jun 1995 12:46:12   amontalv
  347. '' Added code to Server and node to display folder instead of program group if
  348. '' on Win95.  The code doesn't completely work yet as I'm waiting for some UI
  349. '' issues to be worked out
  350. '' 
  351. ''    Rev 1.133   08 Jun 1995 17:08:58   tveerapp
  352. '' Fixed spr# CCOL2NULJ2. Moved the AutoGetProductDestDir function after
  353. '' smartsuite appselection for a standard and node install.
  354. '' 
  355. ''    Rev 1.132   08 Jun 1995 12:33:02   tveerapp
  356. '' Modified ConfigureAUTOEXEC. The autoexec modification code has been remmed
  357. '' out. This sub routine now brings up only the success dilaog.
  358. '' This should fix spr#KHAN2SKKQZ.
  359. '' 
  360. ''    Rev 1.131   07 Jun 1995 16:30:22   amontalv
  361. '' Changed the Win95 start folder so that it initializes
  362. '' earlier in the program.  This should make automation
  363. '' easier to implement for it.  There are still a couple of
  364. '' bugs that I need to work out, but I feel that I should
  365. '' check what I have now.
  366. '' 
  367. ''    Rev 1.130   06 Jun 1995 15:53:30   amontalv
  368. '' We are experiencing problems with LotusScript when we fill buffers with
  369. '' nulls and then pass them to C routines.  For the time being, it is suggested
  370. '' that we fill our buffers with spaces.  To this end (and to make it
  371. '' easier to change back later) I have created a small LotusScript routine
  372. '' named CreateBuffer.  You use it any time you ordinarily would use
  373. '' STRING$(num, 0).  CreateBuffer() just needs the num, it decides what to
  374. '' fill the buffer with (sorry about the grammer).  Right now it fill the
  375. '' buffer with spaces.  Later we will change it back to nulls.  Also look
  376. '' at the routine NullTrim().  It will get rid of final nulls and spaces.
  377. '' You can use this when getting a buffer that has been changed or filled
  378. '' in a external C routine.
  379. '' 
  380. ''    Rev 1.129   05 Jun 1995 18:11:54   tveerapp
  381. '' Changed AutoSetPArentCompDirs to AutoSetParentDir
  382. '' 
  383. ''    Rev 1.128   05 Jun 1995 16:37:12   amontalv
  384. '' Made changes for migrating to LotusScript version 3.0.37.
  385. '' 
  386. ''    Rev 1.127   01 Jun 1995 11:11:34   amontalv
  387. '' Added API function CreateLink to create shortcuts.  Also added functions
  388. '' to save and get the link path to support the CreateLink.  I also changed
  389. '' the startup program folder code to use the default dialog proc and changed
  390. '' the default dialog proc to process directory trees.
  391. '' 
  392. ''    Rev 1.126   30 May 1995 15:42:34   amontalv
  393. '' Made a new function PopupWithFunction.  PopupModalDlg now calls this.  Needed to
  394. '' do this to call dialog with my own dialog function.
  395. '' 
  396. ''    Rev 1.125   30 May 1995 09:25:28   amontalv
  397. '' Added back my changes.  Had not made changes to setupapi.lss to declare
  398. '' functions.
  399. '' 
  400. ''    Rev 1.124   26 May 1995 14:36:44   cmoy
  401. '' rolled back Andy's changes to revision 1.122
  402. '' 
  403. ''    Rev 1.122   22 May 1995 23:32:20   amontalv
  404. '' Added browse for Win 95 program folder.
  405. '' 
  406. ''    Rev 1.121   22 May 1995 09:28:22   mzgripce
  407. '' remove the function IsLotusappPromptNeeded() and the calls to it and remove
  408. '' the tags NODEPROMPTLOTUSAPP: STDSUITPROMPTLOTUSAPP: AND STDPROMPTLOTUSAPP
  409. '' FIXING THE GOTOs TO THEM 
  410. '' 
  411. ''    Rev 1.120   18 May 1995 12:17:36   tveerapp
  412. '' Added call AutoSetParentCompDirs inside SetTheBaseSymbol for a single
  413. '' product automated install.
  414. '' 
  415. ''    Rev 1.119   18 May 1995 12:07:26   mzgripce
  416. '' set default for baseDir to lotus and remove initlang... and use language 
  417. '' 
  418. ''    Rev 1.118   18 May 1995 09:54:48   mzgripce
  419. '' display userUI in server install only in customize case.
  420. '' 
  421. ''    Rev 1.117   17 May 1995 17:56:26   mzgripce
  422. '' display user UI only in customize for standalone install
  423. '' 
  424. ''    Rev 1.116   17 May 1995 08:54:12   jdonohue
  425. '' Added call to InitLanguage
  426. '' 
  427. ''    Rev 1.115   16 May 1995 13:45:30   mzgripce
  428. '' initialize SYM_PARENDIR and call PARENTDIRCB 
  429. '' 
  430. ''    Rev 1.114   16 May 1995 12:56:32   tveerapp
  431. '' Resourced the log file strings.
  432. '' 
  433. ''    Rev 1.113   16 May 1995 12:39:00   tveerapp
  434. '' Added  End of log file .
  435. '' 
  436. ''    Rev 1.112   15 May 1995 17:34:26   tveerapp
  437. '' Fixed gSERVER. For an automated server install do not process the individual
  438. '' product directories.
  439. '' 
  440. ''    Rev 1.111   15 May 1995 11:18:12   jdonohue
  441. '' Moved SetUpApi call to toolkit
  442. '' 
  443. ''    Rev 1.110   11 May 1995 17:26:52   tveerapp
  444. '' Commented out the gLOgFile$ setting in InitInstall.
  445. '' 
  446. ''    Rev 1.109   11 May 1995 14:51:50   tveerapp
  447. '' Added Status logging. Modified InitInstall.
  448. '' 
  449. ''    Rev 1.108   03 May 1995 18:12:24   mzgripce
  450. '' change cursor% to cursor& in one instance 
  451. '' 
  452. ''    Rev 1.107   03 May 1995 12:00:38   tveerapp
  453. '' Fixed cfbuild-c2build merge.
  454. '' 
  455. ''    Rev 1.106   02 May 1995 12:52:54   cmoy
  456. '' Merged c2 into cf build
  457. '' 
  458. ''    Rev 1.104   28 Apr 1995 15:57:44   mheerman
  459. '' Commented out the select program manager group dialog.
  460. ''    Rev 1.103   26 Apr 1995 09:54:24   tveerapp
  461. '' Added Customization during automation for a server install.
  462. '' 
  463. ''    Rev 1.102   25 Apr 1995 11:52:52   tveerapp
  464. '' Added Automation Customization to case gSTANDARD.
  465. '' 
  466. ''    Rev 1.103   10 Apr 1995 17:52:18   amontalv
  467. '' Changed code that removed null termination and trimmed spaces.  There
  468. '' is no longer any null termination to Script text gotten from C calls
  469. ''    Rev 1.101   06 Apr 1995 14:51:26   cmoy
  470. '' No change.
  471. '' 
  472. ''    Rev 1.102   07 Apr 1995 15:04:24   mzgripce
  473. '' 
  474. ''    Rev 1.100   05 Apr 1995 19:53:30   amontalv
  475. '' Porting to 32 bit.
  476. '' 
  477. ''    Rev 1.99   16 Mar 1995 09:58:14   mhishinu
  478. '' No change.
  479. '' 
  480. ''    Rev 1.98   22 Feb 1995 02:29:06   cmoy
  481. '' No change.
  482. '' 
  483. ''    Rev 1.97   02 Feb 1995 14:29:34   cmoy
  484. '' 
  485. '' Thangaraj fixed Pipeline Problem
  486. '' 
  487. ''    Rev 1.96   01 Feb 1995 17:51:18   tveerapp
  488. '' 
  489. '' Added the call to process Node Options for suite in NODENODEOPTIONS (for suite).
  490. '' 
  491. ''    Rev 1.95   19 Jan 1995 12:30:20   tveerapp
  492. '' 
  493. '' Fixed the lotusapp/node install problem when the product does not support
  494. '' lotusapp processing.
  495. '' 
  496. ''    Rev 1.94   09 Jan 1995 10:12:00   tveerapp
  497. '' 
  498. '' Fixed STFQUIT problem.Added UIPopAll before ending execution.
  499. '' 
  500. ''    Rev 1.93   29 Dec 1994 11:58:32   tveerapp
  501. '' 
  502. '' Commented out the call to reboot during automation.
  503. '' 
  504. ''    Rev 1.92   29 Dec 1994 11:11:06   tveerapp
  505. '' 
  506. '' Added the bitmap and new dialog for automation.
  507. '' 
  508. ''    Rev 1.91   23 Dec 1994 14:14:50   jplump
  509. '' 
  510. '' Added call to Lot_AutoGetSetLicenserInfo
  511. '' Removed print statement
  512. '' 
  513. ''    Rev 1.90   22 Dec 1994 15:07:00   tveerapp
  514. '' 
  515. '' Clean up print statements
  516. '' 
  517. ''    Rev 1.89   21 Dec 1994 17:10:22   tveerapp
  518. '' 
  519. '' Added node options processing for an automated node install in case gNODE.
  520. '' 
  521. ''    Rev 1.88   21 Dec 1994 15:01:28   tveerapp
  522. '' 
  523. '' Fixed the return value type on line 1423
  524. '' 
  525. ''    Rev 1.87   21 Dec 1994 13:55:36   tveerapp
  526. '' 
  527. '' Added Suite App selection processing to STANDARD,SERVER and NODE.
  528. '' 
  529. ''    Rev 1.86   21 Dec 1994 12:15:54   tveerapp
  530. '' 
  531. '' Modified SetTheBaseSymbol to add the check for a suite install.
  532. '' 
  533. ''    Rev 1.85   21 Dec 1994 12:03:50   tveerapp
  534. '' 
  535. '' Added automation code to SetTheBaseSymbol.Uses response file base during automation.
  536. '' 
  537. ''    Rev 1.84   12 Dec 1994 13:22:36   tveerapp
  538. '' 
  539. '' Added ResetWinWinsys call to case gSERVER$ for a server install
  540. '' to determine the win winsysdir symbols correctly.
  541. '' 
  542. ''    Rev 1.83   12 Dec 1994 13:20:00   tveerapp
  543. '' Added %s to lsirun cmd line modification.This is to account for
  544. '' the new automation command line arguments.
  545. '' 
  546. ''    Rev 1.82   12 Dec 1994 11:49:10   mzgripce
  547. '' 
  548. '' Use the SQL and Paradox Auto symbols
  549. '' 
  550. ''    Rev 1.81   08 Dec 1994 20:14:24   jplump
  551. '' 
  552. '' Added call to Lot_AutoWriteOutDebugFile
  553. '' 
  554. ''    Rev 1.80   06 Dec 1994 17:17:28   tveerapp
  555. '' Added automation processing to case gDISTRIBUTION$.
  556. '' Added response file processing from the command line (shell).
  557. '' 
  558. ''    Rev 1.79   06 Dec 1994 12:16:18   tveerapp
  559. '' Added Automation code to cases gSERVER$ and gNODE$.
  560. '' 
  561. ''    Rev 1.78   06 Dec 1994 10:21:38   tveerapp
  562. '' Added Lot_AutoConfigure and AutoInstallReboot calls.
  563. '' 
  564. ''    Rev 1.77   05 Dec 1994 16:51:44   tveerapp
  565. '' Added call to Lot_AutoGetUserInfo.
  566. '' 
  567. ''    Rev 1.76   02 Dec 1994 16:52:50   cmoy
  568. '' merged automation files
  569. '' 
  570. ''    Rev 1.75   18 Nov 1994 16:13:02   amontalv
  571. '' Japan DBCS: Added some resources to
  572. '' 
  573. ''    Rev 1.8   01 Dec 1994 17:23:14   tveerapp
  574. '' Added AutoCheckForSpace function.
  575. '' 
  576. ''    Rev 1.7   29 Nov 1994 12:49:12   tveerapp
  577. '' 
  578. '' Changed the return value of Lot_AutoGetSizeOfInstall to be an integer.
  579. '' 
  580. ''    Rev 1.6   29 Nov 1994 11:43:52   jplump
  581. '' 
  582. '' Added automation$, changed return type for Lot_AutoGetProgramGroup
  583. '' 
  584. ''    Rev 1.4   28 Nov 1994 15:52:46   tveerapp
  585. '' Added Lot_AutoGetSizeofInstall and other automation code for the standalone
  586. '' install.D
  587. '' 
  588. ''    Rev 1.3   23 Nov 1994 17:03:32   tveerapp
  589. '' 
  590. '' Added automation logic to the Init Symbol processor.
  591. '' 
  592. ''    Rev 1.2   23 Nov 1994 16:22:56   tveerapp
  593. '' 
  594. '' Added Lot_AutoGetInstallType to InitInstall. Added code to bring up
  595. '' a modeless dialog during automation.
  596. '' 
  597. ''    Rev 1.1   23 Nov 1994 14:50:40   tveerapp
  598. '' Added Automation code to InitInstall and called the auto init function.
  599. '' Also identified some of the changes to be made.
  600. ''==========
  601. '' 
  602. ''    Rev 1.74   02 Aug 1994 16:34:40   mzgripce
  603. '' No change.
  604. '' 
  605. ''    Rev 1.73   01 Aug 1994 10:27:00   cmoy
  606. '' No change.
  607. '' 
  608. ''    Rev 1.72   29 Jun 1994 10:54:18   thangv
  609. '' Moved the SYM_NETLOTUSAPP setting to inside the if statement (798,807).
  610. '' This was previously outside. The code is in NETLOTUSAPP processing. This
  611. '' should fix spr#31726.
  612. '' 
  613. ''    Rev 1.71   24 Jun 1994 11:10:38   thangv
  614. '' Moved the call to Initialize the product copylists during a node install
  615. '' to after the NODESSSAPPSEL dialog (smart suite dialog). The new lines are
  616. '' 729-733. This should fix the suite bug for node install when the user
  617. '' deselects apps but still gets them installed. The call was in the right pla
  618. '' for the std and server.
  619. '' 
  620. ''    Rev 1.70   03 Jun 1994 12:18:32   cmoy
  621. '' 
  622. '' substituted CreateProgmanGroup for ProgmanManageGroup
  623. '' 
  624. ''    Rev 1.69   02 Jun 1994 12:30:48   thangv
  625. '' Added code to process sys.admin.mapping for node install.
  626. '' 
  627. ''    Rev 1.68   31 May 1994 13:55:38   thangv
  628. '' Added restore cursor before CheckForSpace(in case node)and Showwait
  629. '' cursor after Checkfor space.
  630. '' 
  631. ''    Rev 1.67   31 May 1994 13:40:44   mmeth
  632. '' Added Function Calls for Suite to handle previous versions
  633. '' 
  634. ''    Rev 1.66   26 May 1994 18:40:06   cmoy
  635. '' 
  636. '' Replaced CreateProgmanGroup and ShowProgmanGroup with ProgmanManageGroup
  637. '' so that accented characters may be used.
  638. '' 
  639. ''    Rev 1.65   26 May 1994 17:35:12   thangv
  640. '' 
  641. '' Fixed the back link from SRVUI to SRVNODEOPTIONS (it was SRVDATALENS before
  642. '' 
  643. ''    Rev 1.64   25 May 1994 16:12:38   thangv
  644. '' Moved CheckForSpace after share is processed for node. This fixes
  645. '' the node install running out of space bug.
  646. '' 
  647. ''    Rev 1.63   17 May 1994 10:59:20   thangv
  648. '' Moved stdlotusappprompt to before stdcustomize.
  649. '' 
  650. ''    Rev 1.62   13 May 1994 12:13:32   thangv
  651. '' Changed the 2nd arg to ShowProgmanGroup to 1.(it is not minimized).
  652. '' 
  653. ''    Rev 1.61   11 May 1994 12:35:06   thangv
  654. '' Moved Showwaitcursor for the node further up before copying files.
  655. '' 
  656. ''    Rev 1.60   11 May 1994 11:11:06   thangv
  657. '' Bring up DB_PLESEWAIT twice (for std, server) and bring it up for node.
  658. '' Re-arranged Lot_CallPostCopyConifg(std,server,node).
  659. '' Added plese wait foe node install.
  660. '' 
  661. ''    Rev 1.59   11 May 1994 10:31:40   mzgripce
  662. '' sprs 29300 and 29280 (DoDatalens) 
  663. '' 
  664. ''    Rev 1.58   06 May 1994 14:15:20   mzgripce
  665. '' send the prognam name to the addicons
  666. '' 
  667. ''    Rev 1.57   05 May 1994 15:51:02   thangv
  668. '' 
  669. '' Fixed the prev. link from the SSAPPSEL.
  670. '' 
  671. ''    Rev 1.56   03 May 1994 11:09:06   mmeth
  672. '' Added back Confirm Dialog
  673. '' 
  674. ''    Rev 1.55   02 May 1994 18:56:30   mzgripce
  675. '' 
  676. '' put the addIconsXXX as its own call
  677. '' 
  678. ''    Rev 1.54   02 May 1994 14:52:42   cmoy
  679. '' 
  680. '' modified SUB AUTOEXECCONFIG to deal with different versions of windows.
  681. '' 
  682. ''    Rev 1.52   02 May 1994 13:58:22   thangv
  683. '' Added ResetCopyList calls.
  684. '' 
  685. ''    Rev 1.51   28 Apr 1994 18:33:42   cmoy
  686. '' Changed Lot_CallProductFunctions(billboards) to Lot_CallOneProductFunction
  687. '' (billboards)
  688. '' modified NumberOfBytesinBillboard to only check first product.
  689. '' 
  690. ''    Rev 1.50   26 Apr 1994 11:16:38   mzgripce
  691. '' 
  692. '' enable previous from consolidation in node
  693. '' 
  694. ''    Rev 1.49   25 Apr 1994 17:32:36   cmoy
  695. '' 
  696. '' Moved LAUNCHNAG so that it comes up after DB_DISKCOPYMETHOD dialog.
  697. '' 
  698. ''    Rev 1.48   25 Apr 1994 15:42:16   cmoy
  699. '' reset the base distribution directory to lotusdis\
  700. '' in SUB SetTheBaseSymbol
  701. '' main calls SetTheBaseSymbol after the DB_DISKCOPYMETHOD dialog
  702. '' instead of before it now.
  703. '' 
  704. ''    Rev 1.47   22 Apr 1994 14:34:14   mzgripce
  705. '' 
  706. '' set direction to back if consolidation returns back
  707. '' 
  708. ''    Rev 1.46   20 Apr 1994 16:22:06   mzgripce
  709. '' initialize SYM_DOSMAXPATHDIFF$
  710. '' 
  711. ''    Rev 1.45   20 Apr 1994 12:44:26   thangv
  712. '' Added the check AND app_flag<> FALSE to SRVNODEOPTIONS.
  713. '' When everything is unselected.
  714. '' 
  715. ''    Rev 1.44   19 Apr 1994 17:02:24   thangv
  716. '' Added code to fix the bug if all the products are
  717. '' deselected in ss dialogs in the case of standalone and
  718. '' server install.
  719. '' 
  720. ''    Rev 1.43   15 Apr 1994 11:58:26   mmeth
  721. '' NODENODEOPTIONSCB was not being registered for Personal directory dialog
  722. '' 
  723. ''    Rev 1.42   13 Apr 1994 17:06:02   mzgripce
  724. '' do not set sym_netlotusapp$ in main
  725. '' 
  726. ''    Rev 1.41   13 Apr 1994 09:31:12   cmoy
  727. '' 
  728. '' Added SUB ConfigureAUTOEXEC and implemented it
  729. '' 
  730. ''    Rev 1.40   11 Apr 1994 17:49:00   thangv
  731. '' Removed Reg_GetProdSupportforDist(1) <> TRUE check from SERVER_DISTRIBUTION
  732. '' Dialog case. (check only for Srv support.)
  733. '' which is correct.
  734. '' 
  735. ''    Rev 1.39   11 Apr 1994 12:32:16   mmeth
  736. '' 
  737. '' Cleaned up and made it more readable
  738. '' 
  739. ''    Rev 1.38   08 Apr 1994 13:53:04   thangv
  740. '' Fixed the problem with prev. button for Distribution install.
  741. '' Also added the lines in case gDISTRIBUTION that was nuked.
  742. '' 
  743. ''    Rev 1.37   07 Apr 1994 16:40:12   mmeth
  744. '' 
  745. '' Cleaned up main.lss
  746. '' 
  747. ''    Rev 1.36   06 Apr 1994 16:30:12   mmeth
  748. '' Added a list gEXTRA.  This list gets initialized with an etra 200000
  749. '' bytes for the Windows drive.  This can be modified by the product groups if
  750. '' necessary. 
  751. '' 
  752. ''*********************************************************************/
  753. OPTION DECLARE
  754.  
  755. USE "CALLBACK"
  756. USE "LANGUAGE"
  757.  
  758. DECLARE PUBLIC SUB Lot_SetLotusFontsDir
  759. DECLARE FUNCTION DoDatalens(BYVAL direction$) AS STRING
  760. DECLARE FUNCTION NumberOfBytesPerBillbd() AS LONG
  761.  
  762. DECLARE SUB      SetTheBaseSymbol()
  763. DECLARE SUB      InitInstall()
  764. DECLARE SUB      ConfigureAUTOEXEC()
  765. DECLARE SUB InitStickyCopyList(network$, direction$)
  766. DECLARE SUB Lot_DoServerSharedWindows()
  767. DECLARE SUB Lot_DetectSharedWindows() 
  768. DECLARE SUB IncrementSharedDLLCount(s$)
  769. DECLARE SUB Lot_DoSharedDLLs()
  770.  
  771. '*************************************************************************
  772. '** SUB INITIALIZE
  773. '**
  774. '** Purpose: Initial entry point into Common Install
  775. '**            
  776. '** Author:    
  777. '** Arguments: None
  778. '** Returns:   NONE
  779. '*************************************************************************
  780.  
  781. DIM FirstTime$
  782.  
  783. SUB INITIALIZE
  784.    DIM network$, notused%, notused1$, nProducts%,prodIndex%, nDirs%, app_flag%, rc$,i%, cwd$
  785.    DIM inifile$, inf$, curcursor&, grouptitle$, dirSym$, lSize&, destdir$
  786.    DIM direction$, nbytes&, lic$, SameFlag$, netLotusapp$, installini$
  787.    DIM newnetpath$, automation$,longnotused&
  788.    DIM win95proggroup$,yesno&
  789.    DIM lang$, s$, listlen%, dlgID%
  790.  
  791.    '** Set up the error handlers
  792.    ON Error STFQUIT    GOTO MAINERROR
  793.    ON Error STFERR     GOTO STFERR_
  794.    ON Error STFTOGGLE  GOTO STFTOGGLEERR
  795.  
  796.    InitInstall
  797.  
  798. '   IF NOT IsNewShell() THEN
  799. '        IF Lot_CheckPriviledges(PRIVILEDGE_CHECKFLAG_REGSYSTEMPATH) <> ERROR_SUCCESS THEN
  800. '           ErrorMsg SID_ERR_SECURITY, "" 
  801. '           ERROR STFQUIT
  802. '        END IF
  803. '    END IF
  804.  
  805.    nProducts% = Reg_GetNumberOfProducts()
  806.  
  807.  
  808.    '****************************************
  809.    '******* START THE REAL WORK HERE *******
  810.    '****************************************
  811.  
  812. '***********AUTOMATION code*************************************************
  813.    IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
  814.       SetListItem "IDC_BMP", 1, STR$(IDD_TKT_PROD_BMP)
  815.       notused1$ = PopupModelessDlg(DB_AUTOINSTWAIT, DB_AUTOINSTWAIT)
  816.    END IF
  817.    '** Allow the only the 1st product to change the registration default
  818.    '** product will set symbols SYM_NAME$, SYM_COMPANY$
  819.       notused1$  = Lot_CallOneProductFunction (1, "DefaultUserReg", gNEXT, TRUE, "")
  820.       notused%   = Lot_ReadSerialNumber()
  821.  
  822.  
  823. WELCOME:             '** WELCOME THE USER
  824.    direction$ = gNEXT
  825.    '** Call each product's "ProductReg function". Products register themselves with toolkit.
  826.    notused1$  = Lot_CallProductFunctions ("ProductReg", gNEXT, TRUE, gALLPRODUCTS$, "")
  827.  
  828.    '** AUTOMATE: comment out the "PopupModalDlg" stmts and
  829.    '**           and set SYM_NAME$, SYM_COMPANY$, SYM_NETWORK$.
  830.    IF GetSymbolValue(SYM_AUTOMATIONINST$) <> gTRUE$ THEN
  831.      IF GetSymbolValue(SYM_NETWORK$) = gNODE$ THEN
  832.    notused% = RegisterCallback("CALLBACK", "WELCOMECB")
  833.          rc$ = PopupModalDlg(DB_WELCOME_NODE, DB_WELCOME_NODE)
  834.      ELSE
  835.         notused% = RegisterCallback("CALLBACK", "WELCOMECB")
  836.         IF Reg_GetProdSupportForSrv(1)  OR _
  837.      Reg_GetProdSupportForDist(1) <> FALSE THEN
  838.      rc$ = PopupModalDlg(DB_WELCOME, DB_WELCOME)
  839.         ELSE
  840.      rc$ = PopupModalDlg(DB_WELCOMENOSRV, DB_WELCOMENOSRV)
  841.         END IF
  842.       END IF
  843.       '** if the welcome dialog returns gBACK end Install.
  844.       IF rc$ = gBACK$ THEN END
  845.       direction$ = Lot_ConfirmNamesDlg ()
  846.       IF direction$ = gBACK$ THEN  GOTO WELCOME
  847.    ELSE
  848.    notused% = Lot_AutoGetUserInfo()
  849.    END IF
  850.  
  851. SERVER_DISTRIBUTION: '** ASK IF THIS IS A SERVER OR DIST. INSTALL
  852.    network$ = GetSymbolValue(SYM_NETWORK$)
  853.    IF network$ = gSERVER$ OR network$ = gDISTRIBUTION$ THEN
  854.       IF Reg_GetProdSupportforSrv(1) <> FALSE THEN
  855.  
  856.     notused%   = RegisterCallback("CALLBACK","DISKCOPYMETHODCB")
  857.     '** AUTOMATE: comment out next line and explicitly set SYM_NETWORK
  858.     '**           SetSymbolValue SYM_NETWORK, gSERVER
  859.     '**    or
  860.     '**           SetSymbolValue SYM_NETWORK, gDISTRIBUTION
  861.     direction$ = PopupModalDlg (DB_DISKCOPYMETHOD, DB_DISKCOPYMETHOD )
  862.       END IF
  863.    END IF
  864.    IF direction$ = gBACK$ GOTO WELCOME
  865.  
  866. '***********AUTOMATION code*************************************************
  867.    SetTheBaseSymbol
  868.  
  869. LAUNCHNAG:
  870.    network$ = GetSymbolValue(SYM_NETWORK$)
  871.    IF network$ = gSERVER$ THEN
  872.       notused% = RegisterCallback("CALLBACK","LAUNCHNAGCB")
  873.       '** AUTOMATE: comment out next line and never get asked about launching NAG
  874.       direction$ = PopupModalDlg (DB_LAUNCHNAG, DB_LAUNCHNAG )
  875.    END IF
  876.    IF direction$ = gBACK$ GOTO SERVER_DISTRIBUTION
  877.    
  878. '** Find out if this is a shared windows environment and confirm that this is
  879. '** what the user wants (server only)
  880.    IF network$ = gSERVER$ THEN Lot_DetectSharedWindows
  881.  
  882. '** Find out if we're a language install -- handle UI differently if so    
  883.       notused1$ = Lot_CallProductFunctions("InitLanguage", gNEXT, TRUE, gALLPRODUCTS$, "")
  884.       
  885. '***********AUTOMATION code*************************************************
  886. SMARTSUITE_BASEDIR: '** If this is SmartSuite: Ask the user for the BASEDIR
  887.    network$ = GetSymbolValue(SYM_NETWORK$)
  888.    'Don't allow user to change parent directory for a language install
  889.    IF GetSymbolValue(SYM_INSTALLKIND$) <> gLANGUAGEINSTALL$ THEN
  890.    IF network$ <> gDISTRIBUTION$ AND GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  891.       notused% = RegisterCallback("SUIT", "SUITEDIRCB")
  892.       '** AUTOMATE: comment out next line and explicitly set SYM_BASEDIR$
  893.       '**   SetSymbolValue SYM_BASEDIR$, "C:\lotsuite"     
  894.       direction$ = PopupModalDlg(DB_SUITEDIR, DB_SUITEDIR)
  895.    ELSEIF network$ <> gDISTRIBUTION$ THEN
  896.       notused% = RegisterCallback("CALLBACK", "PARENTDIRCB")
  897.       direction$ = PopupModalDlg(DB_PARENTDIR, DB_PARENTDIR)
  898.    END IF
  899.    END IF
  900.  
  901. '***********AUTOMATION code schen 5/9/97 *************************************
  902.    DIM autobase$, defDir$
  903.    IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ AND _
  904.        GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  905.        autobase$ = Lot_AutoGetBaseDirSymbol()
  906.        IF autobase$ <> "" THEN
  907.          defDir$ = autobase$
  908.        ELSE  
  909.          'ErrorMsg "Base Directory entry Invalid"
  910.          ErrorMsg SID_ERR_SETSYMBOLVALUE, LdString(SID_ERR_AUTO_BASEDIR) + "SUIT" 
  911.          ERROR STFQUIT
  912.        END IF
  913.    SetSymbolValue SYM_BASEDIR$, defDir$
  914.    END IF   
  915.  
  916.    IF direction$ = gBACK$ THEN GOTO LAUNCHNAG
  917.    '**************************
  918.    '** Some more intialization
  919.    '**************************
  920.  
  921.    '** Default all products to complete install
  922.    SetSymbolValue SYM_SIZEOFINSTALL$, gCOMPLETE$
  923.    FOR i% = 1 to nProducts%
  924.       Reg_SetSelectedInstallType i%, gCOMPLETE$
  925.    NEXT
  926.  
  927.    automation$ = GetSymbolValue(SYM_AUTOMATIONINST$)
  928.    network$ = GetSymbolValue(SYM_NETWORK$)
  929.    cwd$     = GetSymbolValue(SYM_STF_CWDDIR$)
  930.    inifile$ = MakePath(cwd$,gINSTALLINI$)
  931.  
  932.    SELECT CASE network$
  933.  
  934.    '**********************************************************************
  935.    '*********************** Standard Install *****************************
  936.    '**********************************************************************
  937.  
  938.    CASE gSTANDARD$
  939.  
  940.       '** Read the INF file and initialize the share engine
  941.       inf$ = GetIniKeyString (inifile$, "TOOLKIT", "STDINFFILE")
  942.       ReadInfFile inf$
  943.       notused% = Lot_CallSharedTool("InitSHARE()")
  944.  
  945.       '** Allow the products to do their initialization
  946.       direction$ = Lot_CallProductFunctions("Init", direction$, TRUE, gALLPRODUCTS$, "GetSymbolValue(SYM_BASEDIR$)")
  947.       IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
  948.  
  949.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  950.       direction$  = Lot_CallOneProductFunction (1, "PrevVersions", gNEXT, TRUE, "")
  951.     IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
  952.       END IF
  953.  
  954.  
  955. '***********AUTOMATION code*************************************************
  956. STDSSAPPSEL:
  957.         FirstTime$ = ""
  958.       '** In this dialog, the user can select/deselect applications to be
  959.       '** installed, and also specify directories for individual apps
  960.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  961.          IF automation$ <> gTRUE$ THEN
  962.          notused% = RegisterCallback("SUIT", "APPSELCB")
  963.          '** AUTOMATE: comment out to take defaults, too tricky
  964.          '** to automatically pick anything different.
  965.          direction$ = PopupModalDlg (DBSUIT_APPSEL, DBSUIT_APPSEL)
  966.          ELSE
  967.          notused% = Lot_AutoSuiteAppSelect()
  968.          END IF   
  969.       END IF
  970.       IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
  971.    
  972.       '***********AUTOMATION code: Set The destination Dir symbols*********
  973.       IF automation$ = gTRUE$ AND _
  974.      GetSymbolValue(SYM_INSTALLKIND$) <> gLANGUAGEINSTALL$ THEN
  975.       notused% = Lot_AutoGetProductDestDirSymbol ()
  976.       END IF
  977.  
  978.       '** Consolidate the lotusapp if needed
  979.       IF Lot_CallSharedTool("PreConfigSHARE()") = 2 THEN
  980.     direction$ = gBACK$
  981.       END IF
  982.       IF direction$ = gBACK$  GOTO STDSSAPPSEL
  983.  
  984. '***********AUTOMATION code*************************************************
  985. STDSIZEOFINSTALL:   '** Ask the user kind of install: (COMPLETE, CUSTOM, LAPTOP)   
  986.      '** AUTOMATE: comment out call to "Lot_GetSizeOfInstall"
  987.      '**   Result will be a default install of "COMPLETE", anything else is too tricky.
  988.      '**   For a non-suite install you can set the destination directory:
  989.      '**       dirSym$ = Reg_GetDirSymbolList(1)
  990.      '**       dirSym$ = GetListItem(dirSym$, 1)
  991.      '**       SetSymbolValue dirSym$, "c:\foo\"
  992.      '**       Lot_RefreshDestination(dirSym$)
  993.       nProducts% = Reg_GetNumberOfProducts() :  app_flag% = FALSE
  994.       FOR prodIndex% = 1 to nProducts%
  995.      If Reg_GetUIInOrOut (prodIndex%) <> FALSE  AND _
  996.         Reg_GetAllowUserToPickInSuite(prodIndex%) <> FALSE Then
  997.         app_flag% = TRUE
  998.      End If
  999.       NEXT
  1000.       If app_flag% <> FALSE  Then
  1001.    If automation$ = gTRUE$ Then
  1002.      notused% = Lot_AutoGetSizeOfInstall()
  1003.    Else
  1004.      direction$ = Lot_GetSizeOfInstall()
  1005.      IF direction$ = gBACK$ GOTO STDSSAPPSEL
  1006.    End If
  1007.       End If
  1008.  
  1009. STDINITIALIZECOPYLST:  
  1010.         '** Make the products initialize their own copy list
  1011.         InitStickyCopyList network$, direction$
  1012.       IF direction$ = gBACK$ GOTO STDSIZEOFINSTALL
  1013.  
  1014. '*****AUTOMATION code *****************************************************
  1015.       IF automation$ = gTRUE$ AND _
  1016.     GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ THEN
  1017.    notused% = Lot_AutoCustomizeShare()
  1018.       END IF
  1019.  
  1020.       Lot_SetCurrentProduct(1) 
  1021.  
  1022. STDCUSTOM:
  1023.  
  1024.      IF automation$ <> gTRUE$ Then
  1025.       IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ THEN
  1026.     IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  1027.        notused% = RegisterCallback("CALLBACK","CUSTOM1CB")
  1028.        direction$ = PopupModalDlg (DBM_CUSTOMIZEBASESINGLEPROD, _
  1029.                DBM_CUSTOMIZEBASESINGLEPROD)
  1030.     ELSE
  1031.         If app_flag% <> FALSE  Then
  1032.        notused% = RegisterCallback("SUIT","CUSTOMIZEAPPSCB")
  1033.        direction$ = PopupModalDlg (DBSUIT_CUSTOMIZEAPPS,_
  1034.                   DBSUIT_CUSTOMIZEAPPS)
  1035.         End If
  1036.     END IF
  1037.       END IF
  1038.      ELSE
  1039.    '*** Customize Suite before customizing individual products ***
  1040.    IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  1041.         notused% = Lot_AutoInstallSuiteCustomize()
  1042.    END IF
  1043.    notused% = Lot_AutoInstallCustomize()
  1044.      END IF
  1045.  
  1046.      IF direction$ = gBACK$ GOTO STDINITIALIZECOPYLST
  1047.  
  1048. STDDATALENS:   '** Process the Datalens modules
  1049.       direction$ = DoDatalens(direction$) 
  1050.       IF direction$ = gBACK$ GOTO STDINITIALIZECOPYLST
  1051.  
  1052. STDUSERUI:  '** Allow product to bring up any last minute UI
  1053.      '** AUTOMATE: comment out next line and  avoid product specific UI.
  1054.       direction$ = Lot_CallProductFunctions("UI", direction$, FALSE, g1PRODUCT, "")
  1055.       IF direction$ = gBACK$ GOTO STDDATALENS
  1056.  
  1057. '***********AUTOMATION code*************************************************
  1058. IF  automation$ <> gTRUE$ THEN
  1059. STDPROGMAN: '** Put Progman Group UI
  1060.    notused% = RegisterCallback("CALLBACK","PROGMANGROUPCB")
  1061.       '** AUTOMATE: comment out next line set the progman group name yourself
  1062.       '**           Reg_SetProgManagerGroup 1, "MY GROUP"
  1063.    IF Reg_GetRootFolder() = "" THEN
  1064.       direction$ = PopupModalDlg (DBM_PROGMANGROUP, DBM_PROGMANGROUP)
  1065.    ELSE  
  1066.       direction$ = PopupModalDlg (DBM_PROGRAMFOLDER, DBM_PROGRAMFOLDER)
  1067.    END IF
  1068.    IF direction$ = gBACK$ GOTO STDUSERUI
  1069. ELSE
  1070.    notused% = Lot_AutoGetProgramGroupOrFolder()
  1071. END IF
  1072.       
  1073.      UIPOP 1     '** Bring down automation PLEASEWAIT
  1074.       
  1075.       '** Start the file copy
  1076.  
  1077.       notused% = Lot_AutoWriteOutDebugFile()
  1078.  
  1079.       direction$ = PopupModalDlg (DB_BEGINCOPYING, DB_BEGINCOPYING)
  1080.       IF direction$ = gBACK$ GOTO STDPROGMAN
  1081.  
  1082.       '*****AUTOMATIONCODE********************************
  1083.       '*** Precopy Config processor
  1084.  
  1085.       '** Give the products a last crack at the CopyList before it gets copied
  1086.       notused% =  RemovePriorVersion("reset","buffer")
  1087.       notused1$ = Lot_CallProductFunctions("PreCopyConfig", direction$, FALSE, gALLPRODUCTS, "FALSE")
  1088.  
  1089.       '** Make sure there is enough space
  1090.       IF automation$ = gTRUE$ THEN
  1091.    notused% = AutoCheckForSpace()
  1092.       ELSE      
  1093.    SELECT CASE GetSymbolValue(SYM_SIZEOFINSTALL$)
  1094.  
  1095.     CASE gCOMPLETE$
  1096.        IF CheckForSpace(DB_INSUFDISKSPACE)     = FAILURE GOTO SMARTSUITE_BASEDIR 'STDSIZEOFINSTALL
  1097.     CASE gLAPTOP$
  1098.        IF CheckForSpace(DB_INSUFDISKSPACEMIN)  = FAILURE GOTO SMARTSUITE_BASEDIR 'STDSIZEOFINSTALL
  1099.     CASE gCUSTOM$
  1100.        IF CheckForSpace(DB_INSUFDISKSPACECUST) = FAILURE GOTO STDINITIALIZECOPYLST 'STDCUSTOM
  1101.     END SELECT
  1102.       END IF
  1103.       '** Copy all the files in the copylist
  1104.    longnotused& = SetSizeCheckMode(CLNG(0))
  1105.       IF GetSymbolValue(SYM_LOGFILE$) <> "" THEN 
  1106.     DumpCopyList GetSymbolValue(SYM_LOGFILE$)
  1107.       END IF
  1108.       nbytes& = NumberOfBytesPerBillbd()
  1109.       notused1$ = Lot_CallOneProductFunction(1,"AddTheBillBoards", gNEXT, FALSE, CSTR(nbytes&))
  1110.       
  1111.       ''Display bmps centred in billboards
  1112.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, "CENTERED"
  1113.         '' Added language subdirectory to source/destination paths if needed
  1114.         Lot_FixupLanguageDirectories
  1115.       CopyFilesInCopyList
  1116.       ''Set it back to default now
  1117.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  1118.  
  1119.       '** Configure the shared files
  1120.       curcursor& = ShowWaitCursor()
  1121.       SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
  1122.       notused1$ = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
  1123.       notused% = Lot_SaveFeaturesInstaledInInstallIni()
  1124.         '**   Register shared DLLs for all sections that have the special "_SHRCNT"
  1125.         '**   suffix
  1126.       Lot_DoSharedDLLs
  1127.       
  1128.       '** Allow the products to configure the product after file copy
  1129.       notused1$ = Lot_CallProductFunctions("PostCopyConfig", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1130.       
  1131.       UIPOP 1     '** Bring down DB_PLEASEWAIT
  1132.  
  1133.      IF NOT IsNewShell() THEN
  1134.          '** Create a program manager group for the product #1
  1135.         grouptitle$ = Reg_GetProgManagerGroupName(1)
  1136. '**      notused% = ProgmanManageGroup(grouptitle$, ADD_GRP)
  1137.          CreateProgmanGroup CHR$(34) + grouptitle$ + CHR$(34), "", cmoVital
  1138.      END IF
  1139.  
  1140.     
  1141.       '*** schen  AddiconOptions for Automate install 1/16/95
  1142.  
  1143.       IF automation$ = gTRUE$ Then
  1144.  
  1145.           notused% = Lot_AutoAddiconOptions ()
  1146.           if notused% Then
  1147.              notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1148.           end if
  1149.       ELSE
  1150.           notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1151.       END IF   
  1152.  
  1153.       '** Bring up DB_PLEASEWAIT again
  1154.       SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
  1155.       notused1$ = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
  1156.       
  1157.       notused% = Lot_CallSharedTool("ConfigSHARE()")
  1158.       notused% = Lot_CallSharedTool("AddSHAREIcons()")
  1159.  
  1160.       UIPOP 1     '** Bring down DB_PLEASEWAIT
  1161.       RestoreCursor curcursor&
  1162.      
  1163.       '** Win32: This should do nothing except bring up the success dlg. 
  1164.       ConfigureAUTOEXEC
  1165.  
  1166.       notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNEXT, FALSE, gALLPRODUCTS,"")
  1167.       'IF automation$ = gTRUE$ THEN
  1168.       '  AutoInstallReboot
  1169.       'END IF  
  1170.    '**********************************************************************
  1171.    '************************* Server Install *****************************
  1172.    '**********************************************************************
  1173.  
  1174.    CASE gSERVER$
  1175.  
  1176.       '** Read the Server INF and initialize SHARE
  1177.       inf$ = GetIniKeyString (inifile$, "TOOLKIT", "SRVINFFILE")
  1178.       ReadInfFile inf$
  1179.       notused% = Lot_CallSharedTool("InitSHARE()")
  1180.  
  1181.       '** Allow the products to do their initialization
  1182.       direction$ = Lot_CallProductFunctions("Init", direction$, TRUE, gALLPRODUCTS$, "GetSymbolValue(SYM_BASEDIR$)")
  1183.       IF direction$ = gBACK$ GOTO WELCOME
  1184.  
  1185. '***********AUTOMATION code*************************************************
  1186. SMARTSUITE_COMPONENTSDIR:
  1187.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$  AND _
  1188.              Reg_GetProdSupportforShare(1) = 1 THEN
  1189.  
  1190.             'Set defaults for components and lotusapp directories based on
  1191.             'cinstall.ini found in parent directory
  1192.             s$ = GetSymbolValue(SYM_BASEDIR$)
  1193.             installini$ =  MakePath( s$, gINSTALLINI$)
  1194.             IF DoesFileExist(installini$,femExists) = 1 THEN
  1195.             '** Set server defaults for COMPONENTSDIR based on entries
  1196.             '** in cinstall.ini 
  1197.                 s$ = GetIniKeyString(installini$, "Server Configuration of Shared Tools", _
  1198.                         "COMPONENTSDIR")
  1199.                 IF s$ <> "" THEN SetSymbolValue SYM_COMPONENTSDIR$, s$
  1200.         '** Check for language install by looking for the "LANGUAGE" key in 
  1201.         '** cinstall.ini
  1202.                 lang$ = GetSymbolValue(SYM_INSTALL_LANGUAGE$)
  1203.                 s$ = GetIniKeyString(  installini$, "TOOLKIT", "Language")
  1204.                 IF s$ <> "" AND s$ <> lang$ THEN 
  1205.                     SetSymbolValue SYM_INSTALLKIND$, gLANGUAGEINSTALL$
  1206.                     'For suite/server, all products are language or not
  1207.                     listlen% = GetListLength(SYM_INSTALLKINDS$)
  1208.                     FOR i% = 1 TO listlen%
  1209.                         SetListItem SYM_INSTALLKINDS$, i%, gLANGUAGEINSTALL$
  1210.                     NEXT
  1211.             '** Inform the user what's happening
  1212.             '** The product name is based on first product (single product name or Suite)
  1213.                     s$ = GetSymbolValue(SYM_REG_PRODUCTNAME$)
  1214.                     PopupLanguageInstallMessage( s$ )
  1215.                 END IF
  1216.  
  1217.             END IF
  1218.             IF GetSymbolValue(SYM_INSTALLKIND$) <> gLANGUAGEINSTALL$ THEN  
  1219.                 notused% = RegisterCallback ("CALLBACK", "GETCOMPONENTDIRCB")
  1220.          '** AUTOMATE: comment out next line and explicitly set SYM_COMPONENTSDIR$
  1221.          '**   SetSymbolValue SYM_COMPONENTSDIR$, "C:\lotus\compnent" 
  1222.          '**   Lot_RefreshDestination SYM_COMPONENTSDIR$
  1223.                 direction$ = PopupModalDlg (DBM_SPECIFY_SRVLOTUSAPPDIR, DBM_SPECIFY_SRVLOTUSAPPDIR)
  1224.             END IF
  1225.       
  1226.         END IF
  1227.  
  1228.         '** Language Install Code
  1229.         '**
  1230.         IF GetSymbolValue(SYM_SINGLESMARTSUITE$) <> gSMARTSUITE$ THEN
  1231.             s$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(1) + gTOP$)
  1232.             s$ = Lot_GetChapterValStr(s$, F_DESTDIRSYM)
  1233.             s$ = GetSymbolValue(s$)
  1234.             installini$ =  MakePath( s$, gINSTALLINI$)
  1235.             lang$ = GetSymbolValue(SYM_INSTALL_LANGUAGE$)
  1236.             IF DoesFileExist(installini$,femExists) = 1 THEN
  1237.                 '** If cinstall.ini exists in the product dir, and the language is different
  1238.                 '** and we are a server install, then we are in a language install
  1239.                 '**
  1240.                 s$ = GetIniKeyString(  installini$, "TOOLKIT", "Language")
  1241.                 IF s$ <> "" AND s$ <> lang$ THEN
  1242.                     SetSymbolValue SYM_INSTALLKIND$, gLANGUAGEINSTALL$
  1243.                     SetListItem SYM_INSTALLKINDS$, 1, gLANGUAGEINSTALL$
  1244.                     '** Inform the user what's happening
  1245.                     '** The product name is based on first product (single product name or Suite)
  1246.                     s$ = GetSymbolValue(SYM_REG_PRODUCTNAME$)
  1247.                     PopupLanguageInstallMessage( s$ )
  1248.                     '** Reset server values for COMPONENTSDIR based on entries
  1249.                     '** in cinstall.ini 
  1250.                     s$ = GetIniKeyString(installini$, "Server Configuration of Shared Tools", _
  1251.                         "COMPONENTSDIR")
  1252.                     IF s$ <> "" THEN SetSymbolValue SYM_COMPONENTSDIR$, s$
  1253.                 END IF
  1254.             END IF
  1255.         END IF
  1256.         
  1257.       IF direction$ = gBACK$ THEN  GOTO SMARTSUITE_BASEDIR
  1258.  
  1259.       '** TV: These were called in the callbacks. They should be called in main
  1260.       '** instead.
  1261.       ResetWinWinsysSymbols
  1262.  
  1263.       '** Make sure fonts directory is set relative to location on server
  1264.         Lot_SetLotusFontsDir
  1265.  
  1266. SRVSSAPPSEL: '** In this dialog, the user can select/deselect applications to
  1267.         '** be installed, and also specify directories for individual apps
  1268.         FirstTime$ = ""
  1269.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  1270.          IF automation$ <> gTRUE$ THEN
  1271.          notused% = RegisterCallback("SUIT", "APPSELCB")
  1272.          '** AUTOMATE: comment out to take defaults, too trickey
  1273.          '** to automatically pick anything different.
  1274.          direction$ = PopupModalDlg (DBSUIT_SAPPSEL, DBSUIT_SAPPSEL)
  1275.          ELSE
  1276.          notused% = Lot_AutoSuiteAppSelect()
  1277.          END IF   
  1278.       END IF
  1279.       IF direction$ = gBACK$ GOTO SMARTSUITE_COMPONENTSDIR
  1280.  
  1281. SRVSIZEOFINSTALL:  '** Ask kind of install to do (COMPLETE, CUSTOM, LAPTOP)   
  1282.  
  1283.      '** AUTOMATE: comment out call to "Lot_GetSizeOfInstall"
  1284.      '**   Result will be a default install of "COMPLETE", anything else is too tricky.
  1285.      '**   For a non-suite install you can set the destination directory:
  1286.      '**       dirSym$ = Reg_GetDirSymbolList(1)
  1287.      '**       dirSym$ = GetListItem(dirSym$, 1)
  1288.      '**       SetSymbolValue dirSym$, "c:\foo\"
  1289.      '**       Lot_RefreshDestination(dirSym$)
  1290.       nProducts% = Reg_GetNumberOfProducts() :  app_flag% = FALSE
  1291.       FOR prodIndex% = 1 to nProducts%
  1292.      If Reg_GetUIInOrOut (prodIndex%) <> FALSE  AND _
  1293.         Reg_GetAllowUserToPickInSuite(prodIndex%) <> FALSE Then
  1294.         app_flag% = TRUE
  1295.      End If
  1296.       NEXT
  1297.       If app_flag% <> FALSE  Then
  1298.    If automation$ = gTRUE$ Then
  1299.      notused% = Lot_AutoGetSizeOfInstall()
  1300.    Else
  1301.      direction$ = Lot_GetSizeOfInstall ()
  1302.            IF direction$ = gBACK$ GOTO SRVSSAPPSEL
  1303.    End If
  1304.       End If
  1305.  
  1306.       '** Make the products initialize their own copy list
  1307.         InitStickyCopyList network$, direction$
  1308.       IF direction$ = gBACK$ GOTO SRVSIZEOFINSTALL
  1309.  
  1310. '*****AUTOMATION code *****************************************************
  1311.       IF automation$ = gTRUE$ AND _
  1312.     GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ THEN
  1313.    notused% = Lot_AutoCustomizeShare()
  1314.       END IF
  1315.      
  1316.       Lot_SetCurrentProduct(1) 
  1317.  
  1318. SRVCUSTOM:
  1319.  
  1320.      IF automation$ <> gTRUE$ Then
  1321.       IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ THEN
  1322.     IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  1323.        notused% = RegisterCallback("CALLBACK","CUSTOM1CB")
  1324.        direction$ = PopupModalDlg (DBM_CUSTOMIZEBASESINGLEPROD, _
  1325.                DBM_CUSTOMIZEBASESINGLEPROD)
  1326.     ELSE
  1327.        If app_flag% <> FALSE  Then
  1328.          notused% = RegisterCallback("SUIT","CUSTOMIZEAPPSCB")
  1329.          direction$ = PopupModalDlg (DBSUIT_CUSTOMIZEAPPS,_
  1330.                DBSUIT_CUSTOMIZEAPPS)
  1331.        End If
  1332.     END IF
  1333.       END IF
  1334.      ELSE
  1335.    '*** Customize Suite before customizing individual products ***
  1336.    IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  1337.         notused% = Lot_AutoInstallSuiteCustomize()
  1338.    END IF
  1339.    notused% = Lot_AutoInstallCustomize()
  1340.      END IF
  1341.      
  1342.      IF direction$ = gBACK$ GOTO SRVSIZEOFINSTALL
  1343.  
  1344. SRVDATALENS: '** Process the Datalens modules
  1345.       direction$ = DoDatalens(direction$) 
  1346.       if direction$ = gBACK$ GOTO SRVCUSTOM
  1347.  
  1348. SRVNODEOPTIONS: '** Process the Node Options
  1349.       IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ AND _
  1350.     Lot_AreAnyNodeOptAvailToSrv() <> 0 AND _
  1351.     app_flag% <> FALSE THEN
  1352.    IF automation$ <> gTRUE$ THEN
  1353.     notused% = RegisterCallback("CALLBACK", "SRVNODEOPTIONSCB")
  1354.     '** AUTOMATE: comment out call toPopupmodalDlg and get default.
  1355.     direction$ = PopupModalDlg (DB_SRV_NODEOPTIONS, _
  1356.                DB_SRV_NODEOPTIONS)
  1357.    ELSE
  1358.     notused% = Lot_AutoSetSrvNodeOptions()
  1359.    END IF
  1360.       END IF
  1361.       IF direction$ = gBACK$ GOTO SRVDATALENS
  1362.  
  1363. SRVUI:  '** Allow product to bring up any last minute UI
  1364.      '** AUTOMATE: comment out next line and  avoid product specific UI.
  1365.  
  1366.  
  1367.             direction$ = Lot_CallProductFunctions("UI", direction$, FALSE, g1PRODUCT, "")
  1368.             IF direction$ = gBACK$ GOTO SRVNODEOPTIONS
  1369.  
  1370.       IF automation$ = gTRUE$ THEN  
  1371.          notused% = Lot_AutoGetSetLicenserInfo()
  1372.       END IF  
  1373.  
  1374. '***********AUTOMATION code*************************************************
  1375. IF  automation$ <> gTRUE$ THEN
  1376. SRVPROGMAN: '** Put Progman Group UI
  1377.       notused% = RegisterCallback("CALLBACK","PROGMANGROUPCB")
  1378.      '** AUTOMATE: comment out next line set the progman group name yourself
  1379.      '**           Reg_SetProgManagerGroup 1, "MY GROUP"
  1380.       IF Reg_GetRootFolder() = "" THEN
  1381.          direction$ = PopupModalDlg (DBM_PROGMANGROUP, DBM_PROGMANGROUP)
  1382.       ELSE  
  1383.          direction$ = PopupModalDlg (DBM_PROGRAMFOLDER, DBM_PROGRAMFOLDER)
  1384.       END IF
  1385.       IF direction$ = gBACK$ GOTO SRVUI
  1386. ELSE
  1387.       notused% = Lot_AutoGetProgramGroupOrFolder()
  1388. END IF
  1389.  
  1390.      UIPOP 1     '** Bring down automation PLEASEWAIT
  1391.  
  1392.       notused% = Lot_AutoWriteOutDebugFile()
  1393.  
  1394.       direction$ = PopupModalDlg (DB_BEGINCOPYING, DB_BEGINCOPYING)
  1395.       IF direction$ = gBACK$ GOTO SRVPROGMAN
  1396.  
  1397.       '*****AUTOMATIONCODE********************************
  1398.       '*** Precopy Config processor
  1399.  
  1400.       '** Give the products a last crack at the CopyList before it gets copied
  1401.       ''* IF there is any product with licensing turned on, then
  1402.       ''* assume its on for all products.
  1403.       lic$ = CSTR(FALSE)
  1404.       FOR i% = 1 to nProducts%
  1405.     IF Reg_GetProdSupportForLicense (i%) <> FALSE   AND _
  1406.        Reg_IsLicenseSelected (i%)        <> FALSE   THEN
  1407.           lic$ = CSTR(TRUE)
  1408.           EXIT FOR
  1409.     END IF
  1410.       NEXT
  1411.       notused% =  RemovePriorVersion("reset","buffer")
  1412.       notused1$ = Lot_CallProductFunctions("PreCopyConfig", direction$, FALSE, gALLPRODUCTS, lic$)
  1413.  
  1414.       '** Make sure there is enough space
  1415.       IF automation$ = gTRUE$ THEN
  1416.    notused% = AutoCheckForSpace()
  1417.       ELSE      
  1418.    IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCOMPLETE$ THEN
  1419.     IF CheckForSpace(DB_INSUFDISKSPACE)     = FAILURE GOTO SMARTSUITE_BASEDIR 'SRVSIZEOFINSTALL
  1420.         ELSE
  1421.     IF CheckForSpace(DB_INSUFDISKSPACECUST) = FAILURE GOTO SRVCUSTOM 'SRVCUSTOM
  1422.         END IF
  1423.       END IF
  1424.  
  1425.       '** Start the file copy
  1426.       notused% = SetSizeCheckMode(FALSE)
  1427.       IF GetSymbolValue(SYM_LOGFILE$) <> "" THEN
  1428.     DumpCopyList GetSymbolValue(SYM_LOGFILE$)
  1429.       END IF
  1430.       nbytes& = NumberOfBytesPerBillbd()
  1431.       notused1$ = Lot_CallOneProductFunction(1,"AddTheBillBoards", gNEXT, FALSE, CSTR(nbytes&))
  1432.       ''Display bmps centred in billboards
  1433.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, "CENTERED"
  1434.         '' Added language subdirectory to source/destination paths if needed
  1435.         Lot_FixupLanguageDirectories
  1436.         CopyFilesInCopyList
  1437.       ''Set it back to default now
  1438.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  1439.             
  1440.       ' Special case of server/language install
  1441.         ' Set cinstall.ini location to subdirectory for writing installed features
  1442.       IF GetSymbolValue(SYM_INSTALLKIND$) = gLANGUAGEINSTALL$ THEN 
  1443.             s$ = GetSymbolValue(SYM_INSTALL_LANGUAGE$) 
  1444.             gINSTALLINI$ =  Lot_SetLanguageDirectory(s$) + "\" + gINSTALLINI$
  1445.         END IF
  1446.       '** Configure the shared files
  1447.       curcursor& = ShowWaitCursor()
  1448.       SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
  1449.       notused1$  = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
  1450.       notused%   = Lot_SaveFeaturesInstaledInInstallIni()
  1451.  
  1452.         '' For a shared windows installation, copy the windows, windows system,
  1453.         '' and font files to the shared windows location
  1454.         Lot_DoServerSharedWindows
  1455.  
  1456.       '** All the products to configure after copy
  1457.       IF Lot_AreAnyNodeOptAvailToSrv() <> 0 THEN
  1458.     notused% = Lot_SaveTheNodeOptionsInInstallIni()
  1459.       END IF
  1460.  
  1461.       '** Allow the products to configure the product after file copy
  1462.       notused1$ = Lot_CallProductFunctions("PostCopyConfig", gNEXT, FALSE, gALLPRODUCTS,|"|+grouptitle$+|"|)
  1463.       
  1464.       UIPOP 1 '** Bring Down DB_PLEASEWAIT
  1465.  
  1466.       '** Create a program manager group for the product #1
  1467.       grouptitle$ = Reg_GetProgManagerGroupName(1)
  1468. '**      notused% = ProgmanManageGroup(grouptitle$, ADD_GRP)
  1469.       If NOT IsNewShell() THEN
  1470.          CreateProgmanGroup CHR$(34) + grouptitle$ + CHR$(34), "", cmoVital
  1471.       End If
  1472.       
  1473.       '***  schen 3/19 Automate Addicon for server
  1474.       IF automation$ = gTRUE$ Then
  1475.  
  1476.           notused% = Lot_AutoAddiconOptions ()
  1477.           if notused% Then
  1478.              notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1479.           end if
  1480.       ELSE
  1481.           notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1482.       END IF   
  1483.      
  1484.       SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
  1485.       notused1$  = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
  1486.       
  1487.       notused% = Lot_CallSharedTool("ConfigSHARE()")
  1488.       notused% = Lot_CallSharedTool("AddSHAREIcons()")
  1489.  
  1490.       '** Change the install.ini file so we can do NODE install from server
  1491.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  1492.     dirSym$ = Reg_GetDirSymbolList(1)
  1493.     If GetListLength(dirSym$) <= 0 Then
  1494.        ErrorMsg SID_ERR_SRV_MUST_HAVE_MAINDIR, "" 
  1495.        ERROR STFQUIT
  1496.     End If
  1497.     dirSym$ = GetListItem(dirSym$, 1)
  1498.       ELSE
  1499.     dirSym$ = SYM_BASEDIR$
  1500.       END IF
  1501.       ' Special case of server/language install, use INSTDIR for install.lst
  1502.       IF GetSymbolValue(SYM_INSTALLKIND$) = gLANGUAGEINSTALL$ THEN _
  1503.             dirSym$ = "INSTDIR"
  1504.       CreateIniKeyValue GetSymbolValue(dirSym$) + "install.lst", _
  1505.          "Params", "CmdLine",                     _
  1506.          |lsirun.exe start /S "%s" %s /N|, cmoOverwrite
  1507.       
  1508.       UIPOP 1 '** Bring Down DB_PLEASEWAIT
  1509.       RestoreCursor curcursor&
  1510.  
  1511.       '** Tell user we succeeded
  1512.       '* Only looks at first product! Won't work for smartsuite MMETH
  1513.       notused% = RegisterCallback("CALLBACK","SRV_SUCCESSCB")
  1514.       IF CINT(FIsKeywordInCopyList("LICTOP")) <> FALSE AND _
  1515.     Reg_IsLicenseSelected (1) <> FALSE THEN
  1516.     rc$ = PopupModalDlg (DB_SRV_SUCCESS_LIC, DB_SUCCESS)
  1517.       ELSE
  1518.     rc$ = PopupModalDlg (DB_SRV_SUCCESS, DB_SUCCESS)
  1519.       END IF
  1520.  
  1521.       notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNEXT, FALSE, gALLPRODUCTS,"")
  1522.  
  1523.    '**********************************************************************
  1524.    '************************* Node Install *******************************
  1525.    '**********************************************************************
  1526.  
  1527.    CASE gNODE$
  1528.       
  1529.       '** Read in the INF file and init share
  1530.       inf$ = GetIniKeyString (inifile$, "TOOLKIT", "NODEINFFILE")
  1531.       ReadInfFile inf$
  1532.       notused% = Lot_CallSharedTool("InitSHARE()")
  1533.  
  1534.       '** Call the product initialization functions
  1535.       direction$ = Lot_CallProductFunctions("Init", direction$, TRUE, gALLPRODUCTS$, "GetSymbolValue(SYM_BASEDIR$)")
  1536.       IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
  1537.  
  1538.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  1539.             direction$  = Lot_CallOneProductFunction (1, "PrevVersions", gNEXT, TRUE, "")
  1540.     IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
  1541.       END IF
  1542.  
  1543.       '************** For smart suite, Application Selection Dialog *****
  1544. NODESSAPPSEL:
  1545.         FirstTime$ = ""
  1546.       '** In this dialog, the user can select/deselect applications to be
  1547.       '** installed, and also specify directories for individual apps
  1548.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  1549.          IF automation$ <> gTRUE$ THEN
  1550.          notused% = RegisterCallback("SUIT", "APPSELCB")
  1551.          '** AUTOMATE: comment out to take defaults, too trickey
  1552.          '** to automatically pick anything different.
  1553.          direction$ = PopupModalDlg (DBSUIT_APPSEL, DBSUIT_APPSEL)
  1554.          ELSE
  1555.          notused% = Lot_AutoSuiteAppSelect()
  1556.          END IF   
  1557.       END IF
  1558.       IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
  1559.  
  1560.       '***********AUTOMATION code******************************
  1561.       IF automation$ = gTRUE$ AND _
  1562.      GetSymbolValue(SYM_INSTALLKIND$) <> gLANGUAGEINSTALL$ THEN
  1563.       notused% = Lot_AutoGetProductDestDirSymbol ()
  1564.       END IF
  1565.  
  1566.         '** Language Install Code
  1567.         ' install must be in a language subdirectory and the language a
  1568.         ' secondary language for the server
  1569.         IF IsServerSecondaryLanguage AND SrcDirResetFlag <> TRUE THEN 
  1570.             s$ = GetSymbolValue(SYM_STF_SRCDIR$)  
  1571.             s$ = OneUp(NullTrim(s$))
  1572.             SetSymbolValue SYM_STF_SRCDIR$, s$
  1573.             SrcDirResetFlag = TRUE
  1574.       END IF
  1575.       
  1576.       '** Make the products initialize their own copy list
  1577.         InitStickyCopyList network$, direction$
  1578.       IF direction$ = gBACK$ GOTO NODESSAPPSEL
  1579.  
  1580.       '** Consolidate the lotusapp if needed
  1581.       IF Lot_CallSharedTool("PreConfigSHARE()") = 2 THEN
  1582.     direction$ = gBACK$
  1583.       END IF
  1584.       IF direction$ = gBACK$  GOTO NODESSAPPSEL
  1585.  
  1586.  
  1587.       '************************ Change Node Path *************************
  1588. CHANGE_NODE_PATH:
  1589.       IF direction$ = gBACK$ GOTO NODESSAPPSEL
  1590. NODENODEOPTIONS:
  1591.  
  1592.   '**   For a non-suite install you can set the destination directory:
  1593.   '**       dirSym$ = Reg_GetDirSymbolList(1)
  1594.   '**       dirSym$ = GetListItem(dirSym$, 1)
  1595.   '**       SetSymbolValue dirSym$, "c:\foo\"
  1596.   '**       Lot_RefreshDestination(dirSym$)
  1597.     dlgID% = 0
  1598.   IF automation$ <> gTRUE$ THEN
  1599.         '** If it's standalone and there is a dir symbol
  1600.         IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  1601.             dirSym$ = Reg_GetDirSymbolList(1)
  1602.             IF GetListLength(dirSym$) >= 1  Then
  1603.                 IF Lot_IsAnyNodeOptAvailToNode() <> 0 THEN
  1604.                     dlgID% = DB_NODE_PERSONALDIRNODEOPT
  1605.                 ELSE
  1606.                     dlgID% = DB_NODE_PERSONALDIR
  1607.                 END IF
  1608.             END IF
  1609.         '** smartSuite
  1610.         ELSE
  1611.             IF Lot_IsAnyNodeOptAvailToNode() <> 0 THEN
  1612.                 dlgID% = DB_NODE_NODEOPTIONS
  1613.             END IF
  1614.         END IF
  1615.         IF dlgID% <> 0 THEN
  1616.             notused% = RegisterCallback("CALLBACK", "NODENODEOPTIONSCB")
  1617.             direction$ = PopupModalDlg (dlgID%,CLng(dlgID%))
  1618.         END IF
  1619.     ELSE
  1620.         notused% = Lot_AutoProcessNodeoptions()
  1621.     END IF
  1622.   IF direction$ = gBACK$ GOTO CHANGE_NODE_PATH
  1623.  
  1624. NODEUI:  '** Allow the product to put up its UI
  1625.       direction$ = Lot_CallProductFunctions("UI", direction$, FALSE, g1PRODUCT, "")
  1626.       IF direction$ = gBACK$ GOTO NODENODEOPTIONS:
  1627.  
  1628. '***********AUTOMATION code*************************************************
  1629. IF  automation$ <> gTRUE$ THEN
  1630. NODEPROGMAN:  '** Put Progman Group UI
  1631.       notused% = RegisterCallback("CALLBACK","PROGMANGROUPCB")
  1632.      '** AUTOMATE: comment out next line set the progman group name yourself
  1633.      '**           Reg_SetProgManagerGroup 1, "MY GROUP"
  1634.       IF Reg_GetRootFolder() = "" THEN
  1635.          direction$ = PopupModalDlg (DBM_PROGMANGROUP, DBM_PROGMANGROUP)
  1636.       ELSE  
  1637.          direction$ = PopupModalDlg (DBM_PROGRAMFOLDER, DBM_PROGRAMFOLDER)
  1638.       END IF
  1639.       IF direction$ = gBACK$ GOTO NODEUI
  1640. ELSE
  1641.       notused% = Lot_AutoGetProgramGroupOrFolder()
  1642. END IF
  1643.  
  1644.      UIPOP 1     '** Bring down automation PLEASEWAIT
  1645.  
  1646.       notused% = Lot_AutoWriteOutDebugFile()
  1647.  
  1648.       direction$ = PopupModalDlg (DB_BEGINCOPYING,DB_BEGINCOPYING)
  1649.       IF direction$ = gBACK$ GOTO NODEPROGMAN
  1650.  
  1651.       '*****AUTOMATIONCODE********************************
  1652.       '*** Precopy Config processor
  1653.  
  1654.       '** Configuration before copying
  1655.       notused% =  RemovePriorVersion("reset","buffer")
  1656.       notused1$ = Lot_CallProductFunctions("PreCopyConfig", direction$, FALSE, gALLPRODUCTS, "FALSE")
  1657.  
  1658.  
  1659.       curcursor& = ShowWaitCursor()
  1660.       '** Copy the files
  1661.       longnotused& = SetSizeCheckMode(CLNG(FALSE))
  1662.       notused% = Lot_CallSharedTool ("Lot_RefreshLocalLotusapp()")
  1663.       notused% = Lot_RefreshLocalComponentDir 
  1664.  
  1665.       RestoreCursor curcursor&
  1666.       '** Make sure there is enough space before continuing
  1667.       IF automation$ = gTRUE$ THEN
  1668.    notused% = AutoCheckForSpace()
  1669.       ELSE      
  1670.         IF CheckForSpace(DB_INSUFDISKSPACE) = FAILURE GOTO CHANGE_NODE_PATH
  1671.       END IF
  1672.       
  1673.       curcursor& = ShowWaitCursor()
  1674.       IF GetSymbolValue(SYM_LOGFILE$) <> "" THEN
  1675.     DumpCopyList GetSymbolValue(SYM_LOGFILE$)
  1676.       END IF
  1677.  
  1678.       nbytes& = NumberOfBytesPerBillbd()
  1679.       notused1$ = Lot_CallOneProductFunction(1,"AddTheBillBoards", gNEXT, FALSE, CSTR(nbytes&))
  1680.  
  1681.         '** Fixup location of files on server based on cinstall.ini
  1682.         '** for symbols registered by clients 
  1683.         Lot_FixupSourceDirectories
  1684.  
  1685.       ''Display bmps centred in billboards
  1686.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, "CENTERED"
  1687.         '' Added language subdirectory to source/destination paths if needed
  1688.         Lot_FixupLanguageDirectories
  1689.       CopyFilesInCopyList
  1690.       ''Set it back to default now
  1691.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  1692.  
  1693.       SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
  1694.       notused1$  = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
  1695.       notused% = Lot_SaveFeaturesInstaledInInstNodeIni()
  1696.         '**   Register shared DLLs for all sections that have the special "_SHRCNT"
  1697.         '**   suffix
  1698.       Lot_DoSharedDLLs
  1699.  
  1700.       notused1$ = Lot_CallProductFunctions("PostCopyConfig", gNEXT, FALSE, gALLPRODUCTS,|"|+grouptitle$+|"|)
  1701.       
  1702.       UIPOP 1 '** Bring Down DB_PLEASEWAIT
  1703.       
  1704.       '** Allow the products to do their initialization
  1705.       grouptitle$ = Reg_GetProgManagerGroupName(1)
  1706. '**      notused% = ProgmanManageGroup(grouptitle$, ADD_GRP)
  1707.       If NOT IsNewShell() THEN
  1708.          CreateProgmanGroup CHR$(34) + grouptitle$ + CHR$(34), "", cmoVital
  1709.       End If
  1710.  
  1711.       '*** schen 3/19 for node Automate addicon
  1712.       
  1713.       IF automation$ = gTRUE$ Then
  1714.  
  1715.           notused% = Lot_AutoAddiconOptions ()
  1716.           if notused% Then
  1717.              notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1718.           end if
  1719.       ELSE
  1720.           notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1721.       END IF   
  1722.  
  1723.       SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
  1724.       notused1$  = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
  1725.       
  1726.       '** Configure the shared files
  1727.       notused% = Lot_CallSharedTool("ConfigSHARE()")
  1728.       notused% = Lot_CallSharedTool("AddSHAREIcons()")
  1729.  
  1730.       '** DONE
  1731.       UIPOP 1 '** Bring Down DB_PLEASEWAIT
  1732.       RestoreCursor curcursor&
  1733.       
  1734.       '** Win32: This should do nothing except bring up the success dlg. 
  1735.       ConfigureAUTOEXEC
  1736.  
  1737.       notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNEXT, FALSE, gALLPRODUCTS,"")
  1738.       'IF automation$ = gTRUE$ THEN
  1739.       '  AutoInstallReboot
  1740.       'END IF  
  1741.  
  1742.  
  1743.    '**********************************************************************
  1744.    '******************** Distribution Install ****************************
  1745.    '**********************************************************************
  1746.  
  1747.    CASE gDISTRIBUTION$
  1748.  
  1749.       '** Initialize
  1750.       inf$ = GetIniKeyString (inifile$, "TOOLKIT", "BYWIREINFFILE")
  1751.       ReadInfFile inf$
  1752.  
  1753.       '** Product initialiation
  1754.       direction$ = Lot_CallProductFunctions("Init", direction$, TRUE, gALLPRODUCTS$, "GetSymbolValue(SYM_BASEDIR$)")
  1755.       IF direction$ = gBACK$ GOTO WELCOME
  1756.  
  1757. '***********AUTOMATION code*************************************************
  1758. IF automation$ = gTRUE$ THEN
  1759.       notused% = Lot_AutoGetProductDestDirSymbol ()
  1760. ELSE
  1761.  
  1762.       '******************* Change Distribution Install *******************
  1763.  
  1764. ChangeDistPath:
  1765.  
  1766.       lSize& = Lot_GetInfSectionSize(gDISTRIBUTIONFILES$) \ 1024
  1767.       SetListItem "IDC_TEXT", 1, STR$(lSize&) + gStrK$
  1768.  
  1769.       notused% = RegisterCallback("CALLBACK","DISTSIZEINSTALLCB")
  1770.       '** AUTOMATE: comment out next line and explicitly set directory,
  1771.       '**           if you are not happy with the default
  1772.       '**       dirSym$ = Reg_GetDirSymbolList(1)
  1773.       '**       dirSym$ = GetListItem(dirSym$, 1)
  1774.       '**       SetSymbolValue dirSym$, "c:\foo\"
  1775.       '**       Lot_RefreshDestination(dirSym$)
  1776.       direction$ = PopupModalDlg (DB_CHOOSEPATHDIST, DB_CHOOSEPATHDIST)
  1777.  
  1778.  
  1779.       IF direction$ = gBACK$ GOTO SERVER_DISTRIBUTION
  1780. END IF
  1781.       
  1782.       dirSym$ = Reg_GetDirSymbolList(1)
  1783.       nDirs% = GetListLength(dirSym$)
  1784.       IF nDirs% > 0 THEN
  1785.     dirSym$  = GetListItem(dirSym$, 1)
  1786.     destdir$ = GetSymbolValue(dirSym$)
  1787.     AddSectionFilesToCopyList gDISTRIBUTIONFILES$,_
  1788.                 GetSymbolValue(SYM_STF_SRCDIR$),_
  1789.                 destdir$
  1790.       END IF
  1791.  
  1792.      UIPOP 1     '** Bring down automation PLEASEWAIT
  1793.  
  1794.  
  1795.       IF automation$ = gTRUE$ THEN
  1796.    notused% = AutoCheckForSpace()
  1797.       ELSE      
  1798.         IF CheckForSpace(DB_INSUFDISKSPACE) = FAILURE GOTO ChangeDistPath
  1799.       END IF
  1800.  
  1801.       '' These UI Pops have a funny interaction with CheckFOrSpace
  1802.       '' When Check for SPace putsup a dialog.  (DAVE LOOK AT)
  1803.  
  1804.       '** Ask the user if we should copy files
  1805.       notused% = Lot_AutoWriteOutDebugFile()
  1806.  
  1807.       direction$ = PopupModalDlg (DB_BEGINCOPYING,DB_BEGINCOPYING)
  1808.       IF direction$ = gBACK$ GOTO ChangeDistPath
  1809.  
  1810.       '*****AUTOMATIONCODE********************************
  1811.       '*** Precopy Config processor
  1812.  
  1813.       '** Configuration before copying
  1814.       notused% =  RemovePriorVersion("reset","buffer")
  1815.       notused1$ = Lot_CallProductFunctions("PreCopyConfig", direction$, FALSE, gALLPRODUCTS, "FALSE")
  1816.  
  1817.       '** Copy the distribution files
  1818.       longnotused& = SetSizeCheckMode(CLNG(0))
  1819.       IF GetSymbolValue(SYM_LOGFILE$) <> "" THEN
  1820.     DumpCopyList GetSymbolValue(SYM_LOGFILE$)
  1821.       END IF
  1822.  
  1823.       nbytes& = NumberOfBytesPerBillbd()
  1824.       notused1$ = Lot_CallOneProductFunction(1,"AddTheBillBoards", gNEXT, FALSE, CSTR(nbytes&))
  1825.       ''Display bmps centred in billboards
  1826.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, "CENTERED"
  1827.       CopyFilesInCopyList
  1828.       ''Set it back to default now
  1829.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  1830.  
  1831.       ' ** TV:
  1832.       'notused1$ = Lot_CallProductFunctions("PostCopyConfig", direction$, FALSE, gALLPRODUCTS, "FALSE")
  1833.  
  1834.       '** Tell the user you are done
  1835.       rc$ = PopupModalDlg (DB_SUCCESS, DB_SUCCESS)
  1836.    
  1837.       notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNEXT, FALSE, gALLPRODUCTS,"")
  1838.  
  1839.    '********************* END OF INSTALL CASES ***************************
  1840.  
  1841.    '** IF you get here then it is an error
  1842.    CASE ELSE
  1843.       
  1844.       ERROR STFQUIT
  1845.  
  1846.    END SELECT
  1847.  
  1848.    IF automation$ = gTRUE$ THEN
  1849.       '** TV:Clean up dialogs before quitting 
  1850.       UIPopAll
  1851.       WriteToFile gLogFile$, LdString(SID_AUTOINST_COMPLETE)
  1852.       WriteToFile gLogFile$, LdString(SID_COMMLOGFILE_END)
  1853.       END 
  1854.    END IF
  1855. '*************************************************************************
  1856. '********************** ERROR HANDLERS ***********************************
  1857. '*************************************************************************
  1858.  
  1859. '** If major error, this will exit the program
  1860. MAINERROR:
  1861.    '** TV:Clean up dialogs before quitting 
  1862.    UIPopAll
  1863.    IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
  1864.       WriteToFile gLogFile$, LdString(SID_AUTOINST_ERR)
  1865.       WriteToFile gLogFile$, LdString(SID_COMMLOGFILE_END)
  1866.    END IF   
  1867.    END
  1868.  
  1869. '** DND: Should we do anything else here?
  1870. STFERR_:
  1871.    RESUME NEXT
  1872.  
  1873. STFTOGGLEERR:
  1874.    RESUME NEXT
  1875.  
  1876. END SUB
  1877.  
  1878.  
  1879.  
  1880. '*************************************************************************
  1881. '** FUNCTION DoDatalens(direction$) AS STRING
  1882. '** Purpose:   Take care of all the datalens stuff
  1883. '**     
  1884. '**     
  1885. '** Author:    DND and MMETH
  1886. '** Arguments: SYM_NETWORK$
  1887. '**     
  1888. '** Returns: gBACK$ or ""
  1889. '**     
  1890. '*************************************************************************
  1891.  
  1892. FUNCTION DoDatalens(BYVAL direction$) AS STRING
  1893.  
  1894.     DIM notused%, rc$, chptname$ 
  1895.    If direction$ = gBACK Then GOTO PARADOXUI
  1896. %rem
  1897. 'This is left over from CARMEN
  1898.    IF GetSymbolValue(SYM_NETWORK$) = gSTANDARD$ THEN
  1899.  
  1900.       '** For COMPLETE installs, remove some datalens stuff from
  1901.       '** the copylist.
  1902.       IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCOMPLETE$ THEN
  1903.     If (CINT(FIsKeywordinCopyList ("SHRPARADOXPRG")) <> FALSE) Then   
  1904.         chptname$ =  Lot_GetChapterFromKeyword("SHRPARADOXPRG")
  1905.         Lot_ToggleChapterFilesInCopyList chptname$              
  1906.     end if 
  1907.     If (CINT(FIsKeywordinCopyList ("SHRSQLPRG")) <> FALSE) Then 
  1908.         chptname$ =  Lot_GetChapterFromKeyword("SHRSQLPRG")
  1909.         Lot_ToggleChapterFilesInCopyList chptname$              
  1910.     end if 
  1911.     If (CINT(FIsKeywordinCopyList ("SHRINFORMIXPRG")) <> FALSE) Then
  1912.         chptname$ =  Lot_GetChapterFromKeyword("SHRINFORMIXPRG")
  1913.         Lot_ToggleChapterFilesInCopyList chptname$              
  1914.     end if 
  1915.     If (CINT(FIsKeywordinCopyList ("SHRIBMPRG")) <> FALSE ) Then
  1916.         chptname$ =  Lot_GetChapterFromKeyword("SHRIBMPRG")
  1917.         Lot_ToggleChapterFilesInCopyList chptname$              
  1918.     end if 
  1919.     If (CINT(FIsKeywordinCopyList ("SHRIBMPRG")) <> FALSE ) Then
  1920.         chptname$ =  Lot_GetChapterFromKeyword("SHRIBMPRG")
  1921.         Lot_ToggleChapterFilesInCopyList chptname$              
  1922.     end if 
  1923.        
  1924.       END IF
  1925.  
  1926.    END IF
  1927. %endrem
  1928.  
  1929.    '************** Standard SQL Server Dialog *************************
  1930.  
  1931. SQLUI:
  1932.  
  1933.    IF Lot_CallSharedTool("Lot_IsSQLSelected()") <> FALSE THEN
  1934.  
  1935.     '** INSYMBOLS: ????
  1936.  
  1937.     notused% = RegisterCallback("SHARE", "SQLSERVERNAMECB")
  1938.     '** AUTOMATE: comment out next line and explicitly set SYM_SQLSERVERNAME$
  1939.          IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
  1940.             SetSymbolValue SYM_SQLSERVERNAME$, GetSymbolValue(SYM_AUTO_SQLSERVER)
  1941.          END IF
  1942.        direction$ = PopupModalDlg (DBM_SQL_SERVER_NAME, DBM_SQL_SERVER_NAME)
  1943.  
  1944.     IF direction$ = gBACK$ THEN
  1945.        DoDatalens = direction$
  1946.        EXIT FUNCTION
  1947.     END IF
  1948.    END IF
  1949.  
  1950.    '************** Standard Paradox Dialog ***************************
  1951. PARADOXUI:
  1952.  
  1953.    IF Lot_CallSharedTool("Lot_IsParadoxSelected()") <> FALSE THEN
  1954.  
  1955.     '** INSYMBOLS: ????
  1956.       
  1957.     notused% = RegisterCallback("SHARE", "PARADOXNETWORKINFOCB")
  1958.     '** AUTOMATE: comment out next line and explicitly set SYM_PARADOXNETWORKINFO$
  1959.          IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
  1960.        SetSymbolValue SYM_PARADOXNETWORKINFO$, GetSymbolValue(SYM_AUTO_PARADOXINFO$)
  1961.          END IF
  1962.  
  1963.     direction$ = PopupModalDlg (DBM_PARADOX_NETWORK_INFORMATION, DBM_PARADOX_NETWORK_INFORMATION )
  1964.  
  1965.     '** OUTSYMBOLS: ????
  1966.  
  1967.     IF direction$ = gBACK$ THEN
  1968.        IF Lot_CallSharedTool("Lot_IsSQLSelected()") <> FALSE GOTO SQLUI
  1969.        DoDatalens = gBACK$
  1970.        EXIT FUNCTION
  1971.     END IF
  1972.    END IF
  1973.  
  1974.    DoDatalens = direction$
  1975.    
  1976. END FUNCTION
  1977.  
  1978.  
  1979. '*************************************************************************
  1980. '** FUNCTION NumberOfBytesPerBillbd() AS LONG
  1981. '** Purpose:   Take care of all the datalens stuff
  1982. '**     
  1983. '**     
  1984. '** Author:    MMETH
  1985. '** Arguments: NONE
  1986. '**     
  1987. '** Returns: number of bytes per billboard
  1988. '**     
  1989. '*************************************************************************
  1990.  
  1991. FUNCTION NumberOfBytesPerBillbd() AS LONG
  1992.    DIM   n%, i% ,j%, costs&, nBillboards%, nProducts%, UNCSym$
  1993.  
  1994.    ''**** COMPUTE THE number of bytes for each billboard to stay up
  1995.    costs& = LcbGetChapterCost("", "", SYM_COST$, "")
  1996.    n% = GetListLength(SYM_COST$)
  1997.    costs& = 0
  1998.    for i% = 1 to n%
  1999.       costs& = costs& + CLNG(GetListItem(SYM_COST$, i%))
  2000.    next
  2001.    j%=GetListLength("UNCVOLLIST")
  2002.    FOR i% = 1 to j%
  2003.       UNCSym$ = GetListItem("UNCVOLLIST",i%)
  2004.       costs& = costs& + CLNG(GetListItem(UNCSym$, UNC_COST))
  2005.    NEXT
  2006.    nProducts% = Reg_GetNumberOfProducts()
  2007.    nBillboards% = Reg_GetBillboardNumber(1)
  2008.    If nBillboards% = 0 Then
  2009.       NumberOfBytesPerBillbd = 0
  2010.    Else
  2011.       NumberOfBytesPerBillbd = costs&\nBillboards%
  2012.    End If
  2013.  
  2014. END FUNCTION
  2015.  
  2016.  
  2017. '*************************************************************************
  2018. SUB SetTheBaseSymbol()
  2019. '** IN SYMBOLS ::: SYM_NETWORK$
  2020. '** OUT SYMBOLS::: SYM_BASEDIR$
  2021. '*************************************************************************
  2022. DIM network$, defBase$, lcbSpace&, defDir$, i%, nProducts%, spaceneeded&
  2023. DIM autobase$, s$
  2024. DIM keyvalue$, gbuf$, nsize&, ret&, bRegistryPath%
  2025.  
  2026.    bRegistryPath% = FALSE
  2027.    network$ = GetSymbolValue(SYM_NETWORK$)
  2028.     defBase$ = "lotus\"
  2029.  
  2030.    '** Set the BASE DIRECTORY based on minimum space required
  2031.    lcbSpace& = 0
  2032.    nProducts% = Reg_GetNumberOfProducts()
  2033.    FOR i% = 1 to nProducts%
  2034.      lcbSpace& = lcbSpace& + Reg_GetProdMinSize(i%)
  2035.    NEXT
  2036.    defDir$ = Lot_GetAllHardDrive(lcbSpace&, defBase$)
  2037.    IF defDir$ = "" THEN 
  2038.      defDir$ = LCASE$(GetListItem(SYM_LOCALHARDDRIVES$, 1)) + ":\" + defBase$
  2039.    END IF
  2040.    network$ = GetSymbolValue(SYM_NETWORK$)
  2041.  
  2042.     '** Find out if there's already installed products by querying registry
  2043.     '** Standard takes its value from HLM\SOFTWARE\Lotus\components\LocalPath
  2044.     '** Node takes its value from HCU\SOFTWARE\Lotus\components\User Path
  2045.     SELECT CASE network$
  2046.    CASE gSTANDARD$ 
  2047.      keyvalue$ = "LocalPath"
  2048.      ret& =  Lot_GetRegKeyValueEx(HKEY_LOCAL_MACHINE, gREGLOTUSCOMP, keyvalue$, 0, gbuf$, nsize&) 
  2049.    CASE gNODE$ 
  2050.      keyvalue$ = "User Path"
  2051.      ret& =  Lot_GetRegKeyValueEx(HKEY_CURRENT_USER, gREGLOTUSCOMP, keyvalue$, 0, gbuf$, nsize&) 
  2052.     END SELECT 
  2053.     ' Strip off "compnent" part, e.g. d:\lotus\compnent ==> d:\lotus\
  2054.    IF gbuf$ <> "" AND IsDriveMapped(gbuf$) <> FALSE THEN
  2055.         s$ = OneUp(NullTrim(gbuf$))
  2056.         IF DoesDirExist(Lot_TrimEndSlash(s$)) THEN 
  2057.             defdir$ = s$
  2058.             bRegistryPath% = TRUE
  2059.         END IF
  2060.    END IF  
  2061.  
  2062.    '*** AUTOMATION****************************************
  2063.    IF bRegistryPath% <> TRUE THEN
  2064.      IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ AND _
  2065.        GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  2066.        autobase$ = Lot_AutoGetBaseDirSymbol()
  2067.        IF autobase$ <> "" THEN
  2068.          defDir$ = autobase$
  2069.        ELSE  
  2070.          'ErrorMsg "Base Directory entry Invalid"
  2071.          ErrorMsg SID_ERR_SETSYMBOLVALUE, LdString(SID_ERR_AUTO_BASEDIR) + "SUIT" 
  2072.          ERROR STFQUIT
  2073.        END IF
  2074.      END IF   
  2075.    END IF   
  2076.    SetSymbolValue SYM_BASEDIR$, defDir$
  2077.    SetSymbolValue SYM_BASE16DIR$, defDir$
  2078.  
  2079.    '** Set the PARENT DIRECTORY based on minimum space required
  2080.     '** if not already gotten from registry
  2081.   IF bRegistryPath% = FALSE THEN
  2082.     lcbSpace& = 0
  2083.     defBase$ = "lotus\"
  2084.     FOR i% = 1 to nProducts%
  2085.       lcbSpace& = lcbSpace& + Reg_GetProdMinSize(i%)
  2086.     NEXT
  2087.     defDir$ = Lot_GetAllHardDrive(lcbSpace&, defBase$)
  2088.     IF defDir$ = "" THEN 
  2089.       defDir$ = LCASE$(GetListItem(SYM_LOCALHARDDRIVES$, 1)) + ":\" + defBase$
  2090.     END IF
  2091.     SetSymbolValue SYM_BASEDIR$, defDir$ 
  2092.   END IF
  2093.  
  2094.    '*** AUTOMATION****************************************
  2095.   IF bRegistryPath% <> TRUE THEN
  2096.    IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ AND _
  2097.       GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  2098.           AutoSetParentDir
  2099.    END IF   
  2100.   END IF   
  2101.  
  2102. END SUB
  2103.  
  2104. SUB GetNamesFromRegistry(buf1$, buf2$, RegLoc$)
  2105.    DIM ReturnVal&
  2106.    
  2107.    buf1$=CreateBuffer(260)
  2108.    ReturnVal&=260
  2109.    ReturnVal& = Lot_GetRegKeyValueEx(HKEY_LOCAL_MACHINE,_
  2110.              RegLoc$, gREGUSERNAME, 0, buf1$, ReturnVal&)
  2111.    buf2$=CreateBuffer(260)
  2112.    ReturnVal&=260
  2113.    ReturnVal& = Lot_GetRegKeyValueEx(HKEY_LOCAL_MACHINE,_
  2114.              RegLoc$, gREGORGNAME, 0, buf2$, ReturnVal&)
  2115.    buf1$ = LTrim$(NullTrim(buf1$))
  2116.    buf1$ = Trim$(buf1$)
  2117.    buf2$ = LTrim$(NullTrim(buf2$))
  2118.    buf2$ = Trim$(buf2$)
  2119. END SUB
  2120.  
  2121. SUB InitInstall
  2122.    DIM hUser&, notused%
  2123.    DIM buf1 AS STRING : buf1$ = CreateBuffer(80)
  2124.    DIM buf2 AS STRING : buf2$ = CreateBuffer(80)
  2125.    DIM count%, network$,ReturnVal&
  2126.  
  2127.    '** Initialize the Setup API
  2128.    '-- SetUpAPI  moved to toolkit
  2129.  
  2130.    '****************************************
  2131.    '******* INITIALIZE ALL GLOBAL SYMBOLS **
  2132.    '****************************************
  2133.  
  2134.    '** Default is Single, SmartSuite will override if it is present
  2135.    '** Even for single product installs there may be more that one
  2136.    SetSymbolValue SYM_SINGLESMARTSUITE, gSINGLE$
  2137.  
  2138.    '** Set up a symbol for where the copylist log will get written
  2139.    IF ENVIRON$(gLOTUS_COPYLIST$) <> "" THEN
  2140.       SetSymbolValue SYM_LOGFILE$, GetWindowsDir() + gCOPYLISTLOG$
  2141.    END IF
  2142.  
  2143.    '** Initialize the Win and Winsys symbols
  2144.    Lot_InitializeWinWinsysSym
  2145.  
  2146.    '** Initialize the expected len of subdirs in *.inf paths
  2147.    SetSymbolValue SYM_DOSMAXPATHDIFF$,"20"
  2148.  
  2149.    '** Initialize the gEXTRA list to allow for fudge
  2150.    '** on the windows drive. A deseprate application can add to it.
  2151.    Lot_InitializeEXTRA 
  2152.  
  2153.    ''We show bitmaps in 3 ways, with transparent backrgound (default), streched or centred
  2154.    SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  2155.  
  2156.    '** Get The default Name & Company
  2157.    hUser& = GetModuleHandle(gUSER$)
  2158.    notused% = LoadString (hUser&, USERNAME,    buf1$, 80)
  2159.    notused% = LoadString (hUser&, COMPANYNAME, buf2$, 80)
  2160.  
  2161.    buf1$ = LTrim$(NullTrim(buf1$))
  2162.    buf1$ = Trim$(buf1$)
  2163.    buf2$ = LTrim$(NullTrim(buf2$))
  2164.    buf2$ = Trim$(buf2$)
  2165.  
  2166.    IF buf1$="" THEN
  2167.       GetNamesFromRegistry buf1$, buf2$, gREGWINNAME
  2168.       IF buf1$="" THEN
  2169.          GetNamesFromRegistry buf1$, buf2$, gREGWINNTNAME
  2170.          IF buf1$="" THEN
  2171.             buf1$=CreateBuffer(260)
  2172.             ReturnVal&=260
  2173.             notused%=GetUserName(buf1$,ReturnVal&)
  2174.             buf1$=NullTrim(buf1$)
  2175.             buf2$=buf1$
  2176.          END IF
  2177.       END IF
  2178.    END IF
  2179.  
  2180.    SetSymbolValue SYM_NAME$,    RTrim$(NullTrim(buf1$))
  2181.    SetSymbolValue SYM_COMPANY$, RTrim$(NullTrim(buf2$))
  2182.  
  2183. '***********AUTOMATION code*************************************************
  2184.    IF GetSymbolValue(SYM_AUTOMATIONINST$) = "1" THEN
  2185.       SetSymbolValue SYM_AUTOMATIONINST$, gTRUE$
  2186.         '*** default must be lotinst.log for automation, set in cmdline processing
  2187.      '*** gLogFile$ = GetWindowsDir() + "lotinst.log"
  2188.    ELSE
  2189.           SetSymbolValue SYM_AUTOMATIONINST$, gFALSE$
  2190.    END IF
  2191.       
  2192.    IF GetSymbolValue(SYM_LOGGING$) = "1" THEN
  2193.       IF GetSymbolValue(SYM_LOGGINGPATH$) <> "" THEN
  2194.           gLogFile$ = GetSymbolValue(SYM_LOGGINGPATH$)
  2195.       END IF
  2196.    END IF
  2197.  
  2198.    '** Check to see if command line asks for Node Install
  2199.    '** TV: This should be independent of automation
  2200.    IF INSTR(UCASE$(COMMAND$), "/N") <> 0 THEN
  2201.       SetSymbolValue SYM_NETWORK$, gNODE$
  2202.    ELSE 
  2203.      IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
  2204.    network$ = Lot_AutoGetInstallType()
  2205.    SetSymbolValue SYM_NETWORK$, network$
  2206.      ELSE
  2207.    SetSymbolValue SYM_NETWORK$, gSTANDARD$
  2208.      END IF     
  2209.    END IF
  2210.  
  2211.  
  2212.    '****************************************
  2213.    '******* MISC TRIVIA (Initializing) *****
  2214.    '****************************************
  2215.  
  2216.    '** Even though a Window title is not shown, we need
  2217.    '**  to set the title, so it shows up in the task list.
  2218.    SetTitle LdString(SID_TKT_STD_TITLE)
  2219.  
  2220.    '** The default location of the copy gauge is centered at screen bottom
  2221.    SetCopyGaugePosition -1,32000
  2222.  
  2223. END SUB
  2224.  
  2225. '*************************************************************************
  2226. '** SUB ConfigureAUTOEXEC
  2227. '**
  2228. '** Purpose: Configure AUTOEXEC.BAT after copying files.
  2229. '**            
  2230. '** Author:    CHRISTOPHER MOY
  2231. '** Arguments: None
  2232. '** Returns:   NONE
  2233. '*************************************************************************
  2234. SUB ConfigureAUTOEXEC
  2235.    DIM n%, i%, notused%, notused1$, rc$
  2236.    DIM hwnd%, lr%
  2237.  
  2238. '** DETERMINE IF AUTOEXEC.BAT NEEDS MODIFICATIONS
  2239. SetSymbolValue SYM_NEEDSHARE$, gFALSE$   
  2240. SetSymbolValue SYM_NEEDNOTES$, gFALSE$    
  2241.  
  2242. '**** Win32 does not require autoexec modifictaion *********
  2243. %rem
  2244.  
  2245. n% = Reg_GetNumberOfProducts()
  2246.  
  2247. FOR i% = 1 to n%
  2248.    IF Reg_GetSHAREEXESupport(i%) <> FALSE THEN
  2249. '**      IF IsShareInAUTOEXEC() = FALSE THEN  '** if share is not in autoexec   
  2250. '**         SetSymbolValue SYM_NEEDSHARE$, gTRUE$   '** use symbols?
  2251. '**         EXIT FOR
  2252. '**      ELSE
  2253.       IF IsShareInstalled() = FALSE THEN '**if share is in autoexec
  2254.     SetSymbolValue SYM_NEEDSHARE$, gTRUE$    '**but not running.
  2255.     EXIT FOR
  2256.       END IF
  2257.    END IF
  2258. NEXT
  2259.  
  2260. FOR i% = 1 to n%
  2261.    IF Reg_GetNotesSupport(i%) <> FALSE THEN
  2262.       IF IsNotesInPath() = FALSE THEN
  2263.     SetSymbolValue SYM_NEEDNOTES$, gTRUE$    '** use symbols? 
  2264.     EXIT FOR
  2265.       END IF
  2266.    END IF
  2267. NEXT
  2268.  
  2269. IF GetSymbolValue(SYM_NEEDSHARE$) = gTRUE$ OR GetSymbolValue(SYM_NEEDNOTES$) = gTRUE$ THEN
  2270.   IF GetSymbolValue(SYM_AUTOMATIONINST$) <> gTRUE$ THEN
  2271.       notused% = RegisterCallback("CALLBACK", "AUTOEXECCB")
  2272.       notused1$ = PopupModalDlg(DB_AUTOEXEC, DB_AUTOEXEC)
  2273.  
  2274.       '** Get value in SYM_AUTOEXEC_CHOICE$ from button
  2275.       '** pressed in DB_AUTOEXEC dialog.
  2276.       notused% = RegisterCallback("CALLBACK", "INSTALLCOMPLETECB")
  2277.  
  2278.       SELECT CASE GetSymbolValue(SYM_AUTOEXEC_CHOICE$)
  2279.  
  2280.          CASE "AUTO"
  2281.       notused1$ = PopupModalDlg(DB_SUCCESS_AUTO, DB_SUCCESS_AUTO)
  2282.  
  2283.          CASE "AUTOCOPY"   
  2284.       notused1$ = PopupModalDlg(DB_SUCCESS_AUTOCOPY, DB_SUCCESS_AUTOCOPY)
  2285.  
  2286.          CASE "MAN"
  2287.       notused1$ = PopupModalDlg(DB_SUCCESS_AUTOMAN, DB_SUCCESS_AUTOMAN)
  2288.  
  2289.    END SELECT
  2290.   ELSE
  2291.    notused% = Lot_AutoConfigureAutoexec()
  2292.         '** Tell the user we are all done
  2293.       rc$ = PopupModalDlg(DB_SUCCESS, DB_SUCCESS)
  2294.   END IF
  2295.  
  2296. ELSE
  2297.    '** Tell the user we are all done
  2298.    rc$ = PopupModalDlg(DB_SUCCESS, DB_SUCCESS)
  2299.  
  2300. END IF
  2301.  
  2302. %endrem
  2303. '**** Win32 does not require autoexec modifictaion *********
  2304.  
  2305.    '** Tell the user we are all done
  2306.    
  2307.    IF ExitExecRestart=FALSE THEN
  2308.       rc$ = PopupModalDlg(DB_SUCCESS_REBOOT, DB_SUCCESS_REBOOT)
  2309.       IF rc$="OK"  THEN
  2310.          hwnd%=FindWindow("LInstallWClass",LdString(SID_INST_WINDOW_TITLE))
  2311.          lr%=SendMessage(hwnd%, WM_COMMAND, UM_REBOOTFLAG, 0)
  2312.       END IF
  2313.    ELSE
  2314.    
  2315.       rc$ = PopupModalDlg(DB_SUCCESS, DB_SUCCESS)
  2316.       
  2317.    END IF      
  2318.  
  2319. END SUB
  2320.  
  2321. SUB InitStickyCopyList(network$, direction$)
  2322. '*************************************************************************
  2323. '** Purpose: Initialize copy list, while preserving user settings from a
  2324. '**    previous customize; if the install type changes, local global flag
  2325. '**    FirstTime$ is reset.  This flag is reset when the user backs up to
  2326. '**   the xxxSSAPPSEL portion of the code
  2327. '**            
  2328. '** Author:    JMDonohue
  2329. '** Arguments: 
  2330. '** network$    install type: standard, server, node
  2331. '** direction$    direction
  2332. '*************************************************************************
  2333.     IF FirstTime$ <> network$ THEN
  2334.         ResetCopyList    '** Reset the copylist
  2335.     END IF
  2336.     IF FirstTime$ <> network$ OR _
  2337.             GetSymbolValue(SYM_SIZEOFINSTALL$) <> gCUSTOM$ THEN
  2338.         direction$ = Lot_CallProductFunctions("InitCopyList", direction$, FALSE, gALLPRODUCTS$, "")
  2339.         FirstTime$ = network$
  2340.     END IF
  2341. END SUB 
  2342.  
  2343. DIM ServerWinDir$
  2344. DIM ServerWinSysDir$
  2345.  
  2346. SUB Lot_DetectSharedWindows() 
  2347. '*************************************************************************
  2348. '** Purpose: Determine if this is a shared windows installation.
  2349. '**    For a server install determine if the shared windows location is 
  2350. '**    writeable.  If writeable, asks the user to confirm copying files 
  2351. '**    there, if not ask the user to confirm a standard server install.  
  2352. '**   Sets the value of global gIsSharedWindows% 
  2353. '**            
  2354. '** Author:    JMDonohue
  2355. '** Arguments: NONE
  2356. '*************************************************************************
  2357.     DIM windir$, network$, s$, i%
  2358.     DIM IsDirWriteable%, direction$
  2359. '' We assume that if there is a file names 'machines.ini' in the Windows
  2360. '' directory, then it it
  2361.     s$ = GetWindowsSysDir() 
  2362.     ServerWinSysDir$ = s$
  2363.     i% = Len(s$)     'Assume last character is \
  2364.     DO 
  2365.         i% = i% - 1
  2366.     LOOP    UNTIL Mid(s$, i%, 1) = "\"
  2367.     windir$ = Mid(s$, 1, i%)
  2368.     ServerWinDir$ = windir$
  2369.     IF DoesFileExist(windir$ + "machines.ini", femExists) THEN 
  2370.         gIsSharedWindows% = TRUE 
  2371.     ELSE
  2372.         gIsSharedWindows% = FALSE
  2373.     END IF
  2374.    network$ = GetSymbolValue(SYM_NETWORK$)
  2375.    IF network$ <> gSERVER$ THEN EXIT SUB
  2376.     IF gIsSharedWindows% = FALSE THEN EXIT SUB
  2377.  
  2378. '' For server, this is a shared windows install only if location writeable 
  2379.     IsDirWriteable% = CInt(Lot_IsDirWritable(GetWindowsDir()))
  2380.     IF IsDirWriteable% = 0 THEN
  2381.         gIsSharedWindows% = FALSE
  2382.         direction$ = Lot_SharedWindowsDlg (DB_NOSHAREDWINDOWS)
  2383. %rem
  2384. JMD: Silently copy files if allowed
  2385. AGAO33XJT3
  2386.     ELSE
  2387.         direction$ = Lot_SharedWindowsDlg (DB_SHAREDWINDOWS) 
  2388.         '' Don't use shared location
  2389.         IF direction$ = gBACK$ THEN gIsSharedWindows% = FALSE
  2390. %endrem
  2391.     END IF
  2392.     
  2393. END SUB    
  2394.  
  2395. SUB Lot_DoServerSharedWindows()
  2396. '*************************************************************************
  2397. '**    Purpose: For server shared windows, copy the system 
  2398. '**    and font files to the shared server locations, keyed on sections in the 
  2399. '**    inf file with the following special destination directory symbols:
  2400. '**    
  2401. '**    SYM_LOTUSFONTSDIR$, SYM_WINDIR$ and SYM_WINSYSDIR$ 
  2402. '**            
  2403. '** Author:    JMDonohue
  2404. '** Arguments: NONE
  2405. '*************************************************************************
  2406.    DIM chapter$, DirSym$, InorOut% 
  2407.     DIM SpecialDirectorySymbolList LIST AS INTEGER
  2408.     DIM WindowsChaptersList LIST AS INTEGER
  2409.    SpecialDirectorySymbolList(SYM_WINDIR$) = 1
  2410.    SpecialDirectorySymbolList(SYM_WINSYSDIR$) = 1
  2411.    SpecialDirectorySymbolList(SYM_LOTUSFONTSDIR$) = 1
  2412.  
  2413.     IF gIsSharedWindows% = FALSE THEN EXIT SUB
  2414.  
  2415.     ' We have a writeable shared windows location,
  2416.     ' Copy the system files to the shared windows location
  2417.     ' (have already been copied to normal server location)
  2418.  
  2419.     ' Find the chapters to copy
  2420.     chapter$ = Lot_GetFirst("", F_INOROUT)
  2421.     WHILE (chapter$ <> "")
  2422.         DirSym$ = Lot_GetChapterValStr(chapter$, F_DESTDIRSYM)
  2423.         IF IsElement(SpecialDirectorySymbolList(DirSym$)) = TRUE THEN 
  2424.             WindowsChaptersList(chapter$) = 1
  2425.         END IF
  2426.         chapter$ = Lot_GetNext()
  2427.     WEND
  2428.  
  2429.     ' Turn off all sections, turn on the ones in list
  2430.     ResetCopyList
  2431.    FORALL sym IN WindowsChaptersList
  2432.         chapter$ = ListTag(sym) 
  2433.         Lot_SetChapterFilesInCopyListInOrOut chapter$, 1
  2434.    END FORALL
  2435.     
  2436.     ' Set the values of these symbols to point to the shared server
  2437.     SetSymbolValue SYM_WINDIR$,     ServerWinDir$   
  2438.     SetSymbolValue SYM_WINSYSDIR$,ServerWinSysDir$ 
  2439.     Lot_SetLotusFontsDir
  2440.  
  2441.     Lot_RefreshDestination(SYM_WINDIR$)
  2442.     Lot_RefreshDestination(SYM_WINSYSDIR$)
  2443.     CopyFilesInCopyList
  2444.    ERASE WindowsChaptersList
  2445.  
  2446. END SUB
  2447.  
  2448. PUBLIC SUB Lot_SetLotusFontsDir
  2449. '*************************************************************************
  2450. '**    Purpose: Sets the value of the special destination directory symbol
  2451. '**    LOTUSFONTSDIR to the official Windows fonts directory
  2452. '**   NOTE: SYM_WINDIR$ and SYM_WINSYSDIR$ must have been set prior to call
  2453. '**            
  2454. '** Author:    JMDonohue
  2455. '**     
  2456. '*************************************************************************
  2457.     IF IsNewShell() THEN
  2458.         SetSymbolValue SYM_LOTUSFONTSDIR$, GetSymbolValue(SYM_WINDIR$) _
  2459.             + LdString(SID_FONTS95_DIR) + "\"
  2460.     ELSE
  2461.         SetSymbolValue SYM_LOTUSFONTSDIR$, GetSymbolValue(SYM_WINSYSDIR$)
  2462.     END IF
  2463.     Lot_RefreshDestination (SYM_LOTUSFONTSDIR$)
  2464. END SUB
  2465.  
  2466. SUB Lot_DoSharedDLLs()
  2467. '*************************************************************************
  2468. '** Purpose: Traverses the copy list looking for sections whose section
  2469. '** keyword ends in "_SHRCNT", and increments the usage count in the registry
  2470. '** for these files
  2471. '**  
  2472. '** Author: JMDonohue
  2473. '**************************************************************************
  2474.     DIM s$, szSym$, szSect$, i%, n%, chapter$, Keyword$, DestDir$ 
  2475.     DIM SharedDLLList LIST AS STRING
  2476.     DIM ProdDLL$
  2477.  
  2478.     szSym$ = "SHAREDDLLS"
  2479. '' Traverse all copy list sections, find files in those using "_SHRCNT" suffix
  2480.     chapter$ = Lot_GetFirst("", F_INOROUT)
  2481.     WHILE (chapter$ <> "")
  2482.         Keyword$ = Lot_GetChapterValStr(chapter$, F_KEYWORD)
  2483.         DestDir$ = Lot_GetChapterValStr(chapter$, F_DESTDIR)
  2484.         s$ = Right$(Keyword$,7)
  2485.         IF s$ = "_SHRCNT" THEN 
  2486.             szSect$ = Lot_GetChapterValStr(chapter$, F_NOTHING)
  2487.             ' Get the renamed filename if it exists
  2488.             n% = FGetSectionFileList (szSym$, szSect$, 1)
  2489.             n% = GetListLength(szSym$)
  2490.             '' For each shared DLL in section, create fully qualified pathname
  2491.             '' and add to list of filenames 
  2492.             FOR i% = 1 TO n%
  2493.                 s$ = DestDir$ + GetListItem(szSym$, i%) 
  2494.                 '' Save an entry for each product that uses the file(prodno-file)
  2495.                 ProdDLL$ = LEFT(chapter$,1) +  "-" + s$
  2496.                 IF ISELEMENT(SharedDLLList(ProdDLL$)) = FALSE THEN _
  2497.                     SharedDLLList(ProdDLL$) = s$
  2498.             NEXT
  2499.             RemoveSymbol szSym$
  2500.         END IF
  2501.         chapter$ = Lot_GetNext()
  2502.     WEND
  2503. '' Traverse list, increment the usage count in the registry
  2504.     FORALL sym IN SharedDLLList
  2505.         IncrementSharedDLLCount(sym)
  2506.     END FORALL
  2507.     
  2508. END SUB
  2509.  
  2510. SUB IncrementSharedDLLCount(s$)
  2511. '****************************************************************************
  2512. '** Purpose: Increments the shared dll count in registry.
  2513. '**
  2514. '** Author:  JGHAZAL, JMD
  2515. '** Arguments: s$     shared file fully qualified pathname
  2516. '**
  2517. '****************************************************************************
  2518. DIM regStatus&, subkey$, Descnum as variant, nsize&, Descnum2&
  2519.  
  2520.     subkey$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs"
  2521.     nsize& = 4
  2522.  
  2523.     IF Lot_GetRegKeyValueEx(HKEY_LOCAL_MACHINE, subkey$, s$, REG_DWORD, Descnum, nsize&) = 0 THEN
  2524.         Descnum2& = val(Descnum) + 1
  2525.     ELSE
  2526.         Descnum2& = 1
  2527.     END IF
  2528.     regStatus& = Lot_CreateRegKeyValueEx(HKEY_LOCAL_MACHINE, subkey$, s$, REG_DWORD, Descnum2&, nsize&)
  2529.  
  2530. END SUB
  2531.  
  2532.